1. 다대다 [ N : M ]
- 실무에서는 쓰면 안된다고 합니다.
- 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없음
- 연결 테이블을 추가해서 일대다, 다대다 관계로 풀어내야함
- 테이블
- 객체
- 객체는 컬렉션을 사용해서 객체 2개로 다대다 관계 가능
- @ManyToMany 사용
- @JoinTable로 연결 테이블 지정
- 다대다 매핑
- 단방향, 양방향 가능
- 다대다 매핑의 한계
- 편리해 보이지만 실무에서 사용 X
- 연결 테이블이 단순히 연결만 하고 끝나지 않음
- 주문시간, 수량 같은 데이터가 들어올 수 있음
- 다대다 매핑의 한계 극복
- 연결 테이블용 엔티티 추가( 연결 테이블을 엔티티로 승격 )
- @ManyToMany -> @OneToMany, @ManyToOne
- '다대다 매핑의 한계' 사진처럼 'MEMBER_ID'와 'PRODUCT_ID'를 묶어서 PK로 지정하기 보다는, 위 사진처럼 ORDER테이블에 'ORDER_ID'로 별도의 PK를 지정하는 방식을 추천한다고 합니다.
- 애플리케이션 유연성 증가
- 모든 테이블에 일관성 있게 GENERATE VALUE 생성
- JPA 매핑 심플
출처
'JPA 프로그래밍' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 고급 매핑 - 상속관계 매핑( 1/3 ) (0) | 2021.07.20 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 실전 예제3 - 다양한 연관관계 매핑( 4/4 ) (0) | 2021.07.18 |
[자바 ORM 표준 JPA 프로그래밍] 다양한 연관관계 매핑 - 일대일( 2/4 ) (0) | 2021.07.17 |
[자바 ORM 표준 JPA 프로그래밍] 다양한 연관관계 매핑 - 다대일, 일대다 ( 1/4 ) (0) | 2021.07.14 |
[자바 ORM 표준 JPA 프로그래밍] 실전 예제2 - 연관관계 매핑 시작( 3/3 ) (0) | 2021.07.11 |