728x90
예제 코드)
https://un-lazy-midnight.tistory.com/94
지난 예제에 배송, 카테고리를 추가하려고 한다.
주문과 배송은 1:1
상품과 카테고리는 N:M
ERD와 엔티티 상세를 다음과 같이 변경한다.
//Category
@Entity
public class Category {
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "PARENT_ID")
private Category parent;
@OneToMany(mappedBy = "parent")
private List<Category> child = new ArrayList<>();
@ManyToMany
@JoinTable(name = "CATEGORY_ITEM",
joinColumns = @JoinColumn(name = "CATEGORY_ID"),
inverseJoinColumns = @JoinColumn(name = "ITEM_ID")
)
private List<Item> items = new ArrayList<>();
}
//Delivery
@Entity
public class Delivery {
@Id @GeneratedValue
private Long id;
private String city;
private String street;
private String zipcode;
private DeliveryStatus status;
@OneToOne(mappedBy = "delivery")
private Order order;
}
//Item
@Entity
public class Item {
@Id
@GeneratedValue
@Column(name="item_id")
private Long id;
private String name;
private int price;
private int stockQuantity;
@ManyToMany(mappedBy = "items")
private List<Category> categories = new ArrayList<>();
}
현재 상품과 카테고리가 N:M 관계이므로 중간 테이블을 이용해서 1:N, N:1로 풀어줘야 한다.
다대다 관계는 실무에서 사용하면 안된다!(강조)
728x90
'💻dev > 🌱Java+Spring' 카테고리의 다른 글
JPA | 예제로 알아보는 상속관계 매핑 (예제-4) (0) | 2023.05.01 |
---|---|
JPA | 상속관계 매핑이란? @MappedSuperClass란? (0) | 2023.04.30 |
JPA | 다양한 연관관계 매핑 총정리 (다대일, 일대다, 일대일, 다대다) (0) | 2023.04.30 |
JPA | 예제로 알아보는 연관관계 매핑 (예제-2) (0) | 2023.04.30 |
JPA | 양방향 연관관계와 연관관계의 주인, mappedBy가 뭔데? (0) | 2023.04.29 |