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

학습 페이지

저번에 만든 실전 예제 1을 연관관계 매핑을 더해 만들어보자.

테이블 구조(동일)

Untitled

객체구조(참조를 사용하도록 변경)

Untitled

다쪽이 항상 주인이란걸 기억하는가…? Orderitem은 Order와 Item간의 관계 둘다 모두 주인이다. 이때 Order와는 양뱡향이지만, Item과는 단뱡향으로 설계할 것임.

생각해보면… item입장에서 어떤 OrderItem에 속해있는지는 알 필요가 없다. 쿠팡에서 상품보고 누가 이거 장바구니에 담았는지 볼 필요 없는 것 처럼…

저번에도 언급했듯이 가장 중요한건 우선 단방향으로 설계를 끝내보는 것이다.

먼저 고민해야 할건 member랑 order랑 테이블 관계를 보면, member가 1이고 order가 다이다.

Untitled

그럼 다 쪽인 order의 FK를 잘 매핑해주면 될 뿐이다.

어… 근데 ORDERS가 가진 키가 MEMBER_ID이다… 어째서?

일단 테이블-컬럼 매핑은 놔두고… 객체간 단방향 부터 맺어주자. 어쨌든 테이블 설계 상에서 FK를 가진건 ORDER이므로, 나중에 Order클래스와 ORDERS테이블이 매핑될 것임. 즉 객체간 단방향 매핑은 Order클래스가 member를 갖는 것으로 하자. 그리고 이때 Order입장에선 @ManyToOne이다.

    //Order
    @ManyToOne
    private Member member;

그리고.. 강의에선 Order의 member에 MEMBER_ID컬럼과 매핑해준다… 아니 지금생각해보니까 이상할게 없네…? member필드를 MEMBER_ID(FK)랑 매핑해주고 있으니까 자연스러운 것일지도..?