회원은 Member.team
으로 팀 엔티티를 참조할 수 있지만, 반대로 팀은 회원을 참조할 수 없다.
→ 단방향 관계!
@Entity
public class Member {
@ManyToOne
private Team team;
}
/* 연관관계 주인 !*/
@Entity
public class Team {
...
}
팀과 회원 모두 참조할 수 있는 통로를 만들어주기 위해 팀 엔티티에도 관계를 추가해주자. → 양방향 관계!
실선은 연관관계 주인 / 점선은 연관관계 주인x
@Entity
public class Member {
@ManyToOne
private Team team;
// 무한루프 방지!
public void setTeam(Team team) {
this.team = team;
if(!team.getMembers().cotains(this)) {
team.getMembers().add(this);
}
}
}
/* 연관관계 주인 !*/
@Entity
public class Team {
@OneToMany(mappedBy = "team")
public List<Member> members = new ArrayList<>();
public void addMember(Member member) {
this.members.add(member);
// 무한루프 방지!
if (member.getTeam() != this) {
member.setTeam(this);
}
}
}
양방향은 외래키가 있는 쪽이 연관관계의 주인이다!
양방향은 항상 서로가 참조해야 한다!