이번에는 저번 장에 이어서 여러관계의 연관관계 매핑에 대해서 알아보려고 한다.

다중성과 방향에 대한 모든 경우를 하나씩 살펴보자.

다대일

먼저 다대일에 대한 관계를 먼저 살펴보자.

다대일 방법은 저번 장에 학습했었지만 복습 겸 다시 정리해보자.

다대일 단방향

@Entity
public class Member {

	@Id @GeneratedValue
	@Column (name = "MEMBER_ID")
	private Long Id;

	private String userId;

	@ManyToOne
	@JoinColumn(name = "TEAM_ID")
	private Team team;

	// Getter, Setter, Constructor...
}
@Entity
public class Team {
	
	@Id @GeneratedValue
	@Column (name = "TEAM_ID")
	private Long Id;
	
	private String name;
	
	// Getter, Setter, Constructor...
}

다대일 양방향

@Entity
public class Member {

	@Id @GeneratedValue
	@Column (name = "MEMBER_ID")
	private Long Id;

	private String userId;

	@ManyToOne
	@JoinColumn(name = "TEAM_ID")
	private Team team;

	public void setTeam(Team team) {
		this.team = team;
		if (!team.getMembers().contains(this)){ // 무한루프 방지
			team.getMembers().add(this);
		}
	}

	// Getter, Setter, Constructor...
}
@Entity
public class Team {
	
	@Id @GeneratedValue
	@Column (name = "TEAM_ID)
	private Long Id;

	@OneToMany(mappedBy = "team")
	private List<Member> members = new ArrayList<Member>();
	
	private String name;

	public void addMember(Member member){
		this.members.add(member};
		if(member.getTeam() != this){ // 무한루프 방지
			member.setTeam(this);
		}
		
	}	
	// Getter, Setter, Constructor...
}