자바/JPA

실전 예제 - 다양한 연관관계 매핑

망재이 2023. 8. 17. 19:05

★ 요구사항 추가

- 상품을 주문할 때 배송 정보를 입력할 수 있다. 주문과 배송은 일대일 관계이다.

- 상품을 카테고리로 구분할 수 있다.

 

 

★ ERD

- DELIVERY 테이블이 추가되었고 ORDER 테이블에 DELIVERY_ID라는 외래 키가 추가되었다. CATEGORY_ITEM 테이블은 ITEM과 CATEGORY 테이블과 식별 관계로 정의되어 있다.

 

 

★ UML

- 추가적인 부분만 살펴본다면 일대일 양방향 매핑 관계인 Order과 Delivery 엔티티를 확인할 수 있고, 실무에서는 다대다 매핑을 사용할 일이 거의 없지만 해당 예제에서는 다대다 매핑을 사용해서 연관관계를 매핑해줬다.

- 따라서 ERD에는 CATEGORY_ITEM 테이블이 존재하지만 엔티티를 따로 생성하지 않고 다대다 매핑을 해주었다.

 

 

★ Order 엔티티

- Delivery 엔티티와 일대일 연관관계를 가지며 주 테이블인 Order를 연관관계 주인으로 설정해주었다.

 

 

★ Delivery 엔티티

- Order 엔티티와 일대일 연관관계를 가지며 연관관계의 주인이 아니므로 mappedBy를 이용했으면 Enum클래스를 통해 배송 상태 필드를 설정해주었다.

 

 

★ Category 엔티티

- Item 엔티티와 다대다 연관관계를 가지며 Category 엔티티를 연관관계 주인으로 양방향 매핑을 해주었다.

 

 

★ Item 엔티티

- Category 엔티티와 다대다 연관관계를 가지며 연관관계 주인이 아니므로 mappedBy를 이용해서 매핑해주었다.

 

728x90