[참고 강의] 김영한님의 자바 ORM 표준 JPA 프로그래밍
[ 다양한 연관관계 매핑 ]
💡 다대다
✔️ 다대다
-
관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없음
-
연결 테이블을 추가해서 일대다, 다대일 관계로 풀어내야함
-
객체는 컬렉션을 사용해서 객체 2개로 다대다 관계 가능
다대다
- @ManyToMany 사용
- @JoinTable로 연결 테이블 지정
- 다대다 매핑: 단방향, 양방향 가능
✔️ 다대다 매핑의 한계
- 편리해보이지만 실무에서 사용X
- 연결 테이블이 단순히 연결만하고 끝나지 않음
- 주문시간, 수량 같은 데이터가 들어올 수 있음
✔️ 다대다 한계 극복
- 연결 테이블용 엔티티 추가(연결 테이블을 엔티티로 승격)
- @ManyToMany -> @OneToMany, @ManyToOne
💡 실전 예제
✔️ 배송, 카테고리 추가 - 엔티티
- 주문과 배송은 1:1 (@OneToOne)
- 상품과 카테고리는 N:M(@ManyToMany)
엔티티 상세
✔️ N:M 관계는 1:N, N:1로
- 테이블의 N:M 관계는 중간 테이블을 이용해서 1:N, N:1
- 실전에서는 중간 테이블이 단순하지 않다.
- @ManyToMany는 제약: 필드 추가 X, 엔티티 테이블 불일치
- 실전에서는 @ManyToMany 사용 X
예제 코드 정리중...