dev/JPA 기본
다대다 [N:M]
dev_0hoon
2024. 2. 2. 13:28
** 실무에서는 쓰면 안된다.
다대다
- 관계형 데이터 베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없음
- 연결 테이블을 추가해서 일대다, 다대일 관계로 풀어내야함
- 객체는 컬렉션을 사용해서 객체 2개로 다대다 관계 가능

@ManyToMany
Member class
@ManyToMany
@JoinTable(name = "MEMBER_PRODUCT")
private List<Product> products = new ArrayList<>();
Product class
@ManyToMany(mappedBy = "products")
private List<Member> members = new ArrayList<>();
한계
- 편리해 보이지만 실무에서 사용x
- 연결 테이블이 단순히 연결만 하고 끝나지 않음
- 주문시간, 수량 같은 데이터가 들어올 수 있음

다대다 한계 극복
- 연결 테이블용 엔티티 추가 (연결 테이블을 엔티티로 승격)
- @ManyToMany -> @OneToMany , @ManyToOn
