개요
본 포스팅은 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 기반으로 작성되었습니다.
1. 연관 관계의 주인이 탄생한 배경
객체의 양방향 관계는 사실 양방향 관계가 아니라 단방향 관계 2개입니다.
문제가 되는 포인트
만약 내가 멤버가 속한 팀을 변경하고 싶을 때, 멤버에 있는 팀을 바꿔야 할 지, 팀에 있는 멤버를 바꿔야 할지가 불분명합니다.
어떤 것을 중심으로 외래키 (team_id)를 변경해야 할까요?
만약 멤버는 팀을 바꾸고 팀에서는 멤버 리스트를 관리하지 않으면 충돌이 생기기 때문에, 둘 중 하나로 외래키를 관리해야 합니다.
그래서 연관관계의 주인이 탄생했습니다.
연관관계의 주인만이 외래 키를 관리(등록, 수정) 할 수 있습니다.
주인이 아닌 쪽은 읽기만 가능합니다.
주인은 mappedBy 속성을 사용하면 안됩니다.
주인이 아니면 mappedBy 속성으로 주인을 지정해주어야 합니다.
일 대 다의 관계에서 다가 주인입니다.
그러면 만약 일대다의 관계에서 일이 주인이 되면 어떻게 될까요?
양방향 연관 관계 일 땐 양쪽에 다 값을 설정 해주는 것이 좋습니다.
연관 관계 편의 메서드를 생성합니다.
public void setTeam(Team team){
this.team = team;
team.getMembers.add(this);
}
Java
복사