양방향 연관관계 VS 단방향 연관관계 X Join 쿼리
거의 모든 연관관계가 양방향이다
이게 맞나?
사실 초기 기획에서 Join을 통한 검색 및 조회를 전혀 염두에 두지 않아서 생긴문제
특정 엔티티에서 다른 엔티티를 조회하는 방법이 연관관계라고 생각했었다.
즉 조회가 필요한 방향의 모든 연관관계를 만들어 주었다.
어? 그런데 Join을 사용하면 되네?
위의 도메인보다 더욱 복잡해것이 실제 코드다
위와 같이 단순히 연관관계를 위한 필드 뿐만아니라
각각의 관계편의 메소드가 추가되어 코드가 더더욱 복잡해진다
단방향이어도 테이블 관계 상에서 양방향 조회가 모두 가능하다.
따라서 단방향 연관관계와 쿼리를 이용하면 가능하다!
이 질문과 유사한 의도의 질문이 존재하여 답변을 일부 인용했다
Q
그냥 단방향 매핑으로 모든 거 처리하고, 필요할때만 sql join query 날려서 join해서 불러오면 되는거 아냐? 라는 생각도 드는데요..
A
네 그렇게 해도 됩니다^^!
그런데 실제 개발을 해보면 복잡한 조회 쿼리에서 양방향 매핑을 하고 싶은 경우가 발생합니다.
예를 들어서 team 1:N member 이런 관계가 있을 때 team과 member를 fetch join으로 한번에 조회하고 싶은 경우가 있습니다.
이럴 때 양방향 매핑이 필요합니다.
원문
즉 양방향 연관관계를 꼭 써야할 필요는 없는것 같다
단방향 X Join 사용시
연관관계 메소드를 잘못만들어 재귀호출 문제를 겪지 않아도 될것이고
도메인 코드가 단순해질것이다
특정엔티티의 비지니스로직이 있는 Service 레이어에서 해당 엔티티의 Repository가 아닌 외래키를 갖고있는 엔티티의 Repository에 접근하여 삭제해주어야한다
결론부터 말하자면 그렇다고 볼 수는 없다.
다른 포스트에서 다룬 문제다
이것도 다른 포스트에서 다룬 문제다