5.4 연관관계의 주인
두 객체 연관관계 중 하나를 정해서 테이블의 외래키를 관리해야 하는데 이것을 연관관계의 주인이라고 한다.
5.4.1 양방향 매핑 규칙 : 연관관계의 주인
- 연관관계의 주인만이 데이타베이스 연관관계와 매핑된다.
- 연관관계의 주인만이 외래키를 관리(등록, 수정, 삭제)할 수 있다.
- 주인이 아닌 쪽은 읽기만 할 수 있다.
연관관계의 주인을 정한다는 것 = 외래 키 관리자를 선택하는 것.
mappedBy 속성
- 주인이 아니면
mappedBy 속성
을 사용해서 속성의 값으로 연관관계의 주인을 지정 - 주인은
mappedBy 속성
을 사용하지 않는다.
5.4.2 연관관계의 주인은 외래 키가 있는 곳
- 연관관계의 주인은 테이블에 외래 키가 있는 곳으로 정해야 한다.
- Team 엔티티는 mappedBy를 통해 주인이 아님을 설정.
class Team {
@OneToMany(mappedBy = "team") // 연관관계 주인인 Member.team
private List<Member> members = new ArrayList<Member>();
}
중요
- 연관관계의 주인만 데이터베이스 연관관계와 매핑, 외래 키를 관리.
- 주인이 아닌 반대편은 읽기만 가능, 외래 키를 변경하지 못한다.
- 항상 '다(N)'쪽이 외래 키를 가진다.
- @ManyToOne은 항상 연관관계의 주인이 됨.
mappedBy 속성
이 없다.