다대일 [N:1]

단방향

image.png

회원은 Member.team 으로 팀 엔티티를 참조할 수 있지만, 반대로 팀은 회원을 참조할 수 없다. → 단방향 관계!

@Entity
public class Member {

		@ManyToOne
		private Team team;
}
/* 연관관계 주인 !*/
@Entity
public class Team {

		...
}

양방향

팀과 회원 모두 참조할 수 있는 통로를 만들어주기 위해 팀 엔티티에도 관계를 추가해주자. → 양방향 관계!

실선은 연관관계 주인  /  점선은 연관관계 주인x

실선은 연관관계 주인 / 점선은 연관관계 주인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);
				}
		}
}

양방향은 외래키가 있는 쪽연관관계의 주인이다!

양방향은 항상 서로가 참조해야 한다!