6장. 다양한 연관관계 매핑
Last update: a year ago by nowwaterReading time: 2 min
🤸♂️목차
- 다대일
- 일대다
- 일대일 [1:1]
- 다대다 [N:N]
- 정리
이 장에서는
O 대 O
에서 왼쪽을 연관관계의 주인으로 가정하여 분류하였다.
엔티티 연관관계 매핑 시 고려사항
1. 다중성
- 다대일(
@ManyToOne
), 일대다(@OneToMany
), 일대일(@OneToOne
), 다대다(@ManyToMany
)
- 다중성을 판단하기 어려울 때는 반대방향을 생각해본다.
- 일대다의 반대방향은 항상 다대일, 일대일의 반대방향은 항상 일대일
- 보통 다대일과 일대다 관계를 가장 많이 사용. 다대다 관계는 실무에서 거의 사용 X
2. 단방향, 양방향
- 단방향 관계 : 객체 관계에서 한 쪽만 참조하는 것
- 양방향 관계 : 양쪽이 서로 참조하는 것
3. 연관관계의 주인
- 엔티티 양방향 매핑 시 2곳에서 서로를 참조한다. -> 객체의 연관관계 관리 포인트 2곳
- JPA는 두 객체 연관관계 중 하나를 정해서 데이터베이스 외래 키를 관리한다. -> 연관관계의 주인을 설정한다.
- 외래 키를 가진 테이블과 매핑한 엔티티가 외래 키를 관리하는 것이 효율적이어서 보통 연관관계의 주인으로 선택한다.
- 주인이 아닌 방향은 외래 키를 변경할 수 없고 읽기만 가능하다.
모든 연관관계
1. 다대일 : 단방향, 양방향
2. 일대다 : 단방향, 양방향
3. 일대일 : 주 테이블 단방향, 양방향
4. 일대일 : 대상 테이블 단방향, 양방향
5. 다대다 : 단방향, 양방향