양방향, 단방향 매핑 예제

이상훈·2022년 10월 3일
0

Jpa

목록 보기
4/16

양방향 단방향에 대해 생각해볼만한 간단한 예제

테이블 구조

객체 구조

  • Member와 Order 관계 (모범답안 : Order -> Member)
    🤔 회원 입장에서 주문내역을 조회할 수 있으니 양방향이 옳지 않을까?
    -> 하지만 이렇게 설계를 하면 회원이 모든 것(주문, 배송, 장바구니 등)을 다 참조해야 해서 너무 복잡하다. 오히려 주문, 배송 등등 객체 각각에서 필요한 곳을 참조하는 식으로 설계를 하는 것이 더 좋은 설계 방법이다. 예를 들어 '내 주문 내역' 같은 경우는 아래 쿼리 처럼 order만 있어도 충분하다.
    select o from Order o where o.member.id = :memberId

    우리가 설계를 할 때 회원이 주문을 하니까 회원에 뭔가 넣어야지라고 생각할 수 있는데, 사실 이렇게 설계하면, 회원이 모든 것을 다 참조해야 한다.

  • Order와 OrderItem (모범답안 : Order <-> OrderItem)
    -> Order 입장에선 비즈니스적으로 OrderItem을 갖는게 의미 있다. 이렇게 양방향으로 짜면 편하다.
  • OrderItem과 Item (모범답안 : OrderItem -> Item)
    -> Item에서 OrderItem은 의미가 없다. 상품 입장에서는 어떤 주문에 의해 상품화되었는가가 중요하지 않다.

핵심은 최대한 단방향으로 짜고 양방향은 필요할 때 추가하자.

profile
Problem Solving과 기술적 의사결정을 중요시합니다.

0개의 댓글