- 연관관계의 주인은 외래키의 위치를 기준으로 정해야 한다.
- 연관관계 편의 메소드를 생성한다.(둘 중에 하나만 사용해야 한다. 둘 다 사용시 무한 루프가 생길 수 있다.)
@Entity
public class Member {
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
public void setTeam(Team team) {
if (this.team != null) {
this.team.getMember().remove(this)
}
this.team = team;
team.getMember().add(this);
}
}
@Entity
public class Team {
@OneToMany(mappedBy = "team")
private List memberList = new ArrayList<>();
public void setMember(Member member) {
memberList.add(member);
if (member.getTeam != this) {
member.setTeam(this);
}
}
}
- 양방향 매핑 시에 무한 루프를 조심해야 한다.
예) toString(), lombok, JSON 생성 라이브러리
- 처음에 설계 시 단방향 매핑으로만 완료해야 한다.(양방향 매핑은 필요할 때 추가해도 된다.)
- OneToOne일 시 FetchJoin 해주기, 안하면 N+1건 조회함.