인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

ksh9241님의 프로필 이미지
ksh9241

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

실전 예제 2 - 연관관계 매핑 시작

양방향 연관관계에 대해서 질문드립니다.

작성

·

655

4

선생님께서 양방향으로 처리하는 것보다 단방향으로 처리하는 것이 더 좋다고 말씀하셨는데 그렇다면 한가지 예시로 Member와 order의 관계에서 회원으로 로그인해서 주문내역을 확인하고 싶을 경우 양방향의 경우 다이렉트로 Member.getOrders로 처리가 가능하지만 단방향의 경우 em.find(Order.class, member.getId())를 통해 한번더 쿼리문을 날려야 되는데 이게 더 맞는 사용방법이라는 말씀이신가요??? 아직 실무 JPA경험이 없어서 왜 그 부분이 더 좋은지 이해가 가질 않습니다.. 강의에서 말씀하시는 끊어줘야 된다는 부분이 어떠한 이유로 끊어줘야되는지 여쭤봐도될까요??

답변 1

13

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. ksh9241님

연관관계를 두어도 되지만, 여기에서 끊어줘야 한다는 것은 연관관계가 너무 복잡해지기 때문입니다.

회원 -> 주문

회원 -> 장바구니

회원 -> 리뷰

등등 이렇게 회원에 연관관계를 모두 양방향으로 만들면 회원 객체는 너무 많은 연관관계를 가지게 됩니다.

우리가 실제 개발을 할 때는 주문 -> 회원을 참조하는 경우는 많지만, 회원 -> 주문을 연관관계를 가지고 참조하는 경우는 드뭅니다.

주문 자체가 하나의 의미있는 단위이기 때문에 회원을 조회하고, 거기에 있는 주문을 찾기 보다는, 주문 자체를 바로 찾는 경우가 더 많습니다.

이후 JPQL을 학습하게 되면 이런 상황에 연관관계가 없어도 Order를 별도로 조회하는 좋은 방법들을 이해하실 수 있습니다.

감사합니다.

ksh9241님의 프로필 이미지
ksh9241
질문자

답변 감사합니다 다음 강의 계속 진행하면서 경험해보겠습니다. 

ksh9241님의 프로필 이미지
ksh9241

작성한 질문수

질문하기