작성
·
648
4
선생님께서 양방향으로 처리하는 것보다 단방향으로 처리하는 것이 더 좋다고 말씀하셨는데 그렇다면 한가지 예시로 Member와 order의 관계에서 회원으로 로그인해서 주문내역을 확인하고 싶을 경우 양방향의 경우 다이렉트로 Member.getOrders로 처리가 가능하지만 단방향의 경우 em.find(Order.class, member.getId())를 통해 한번더 쿼리문을 날려야 되는데 이게 더 맞는 사용방법이라는 말씀이신가요??? 아직 실무 JPA경험이 없어서 왜 그 부분이 더 좋은지 이해가 가질 않습니다.. 강의에서 말씀하시는 끊어줘야 된다는 부분이 어떠한 이유로 끊어줘야되는지 여쭤봐도될까요??
답변 1
13
안녕하세요. ksh9241님
연관관계를 두어도 되지만, 여기에서 끊어줘야 한다는 것은 연관관계가 너무 복잡해지기 때문입니다.
회원 -> 주문
회원 -> 장바구니
회원 -> 리뷰
등등 이렇게 회원에 연관관계를 모두 양방향으로 만들면 회원 객체는 너무 많은 연관관계를 가지게 됩니다.
우리가 실제 개발을 할 때는 주문 -> 회원을 참조하는 경우는 많지만, 회원 -> 주문을 연관관계를 가지고 참조하는 경우는 드뭅니다.
주문 자체가 하나의 의미있는 단위이기 때문에 회원을 조회하고, 거기에 있는 주문을 찾기 보다는, 주문 자체를 바로 찾는 경우가 더 많습니다.
이후 JPQL을 학습하게 되면 이런 상황에 연관관계가 없어도 Order를 별도로 조회하는 좋은 방법들을 이해하실 수 있습니다.
감사합니다.
답변 감사합니다 다음 강의 계속 진행하면서 경험해보겠습니다.