// 멤버
public class Member {
@Id
@Column(name = "MEMBER_ID")
private Long id;
@Column(name="USERNAME")
private String username;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
@Enumerated(EnumType.STRING)
private RoleType roleType;
}
// 팀
public class Team {
@Id @GeneratedValue
@Column(name = "TEAM_ID")
private Long id;
private String name;
}
// 사용 예시
public Member createMember(String name, RoleType roleType, Long id){
Member member = new Member();
Team team = teamRepository.findById(id).isPresent() ? teamRepository.findById(id).get() : null;
member.setUsername(name);
member.setTeam(team);
member.setRoleType(roleType);
String teamName = member.getTeam().getName();
return memberRepository.save(member);
}
// 멤버
public class Member {
@Id
@Column(name = "MEMBER_ID")
private Long id;
@Column(name="USERNAME")
private String username;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
@Enumerated(EnumType.STRING)
private RoleType roleType;
}
// 팀
public class Team {
@Id @GeneratedValue
@Column(name = "TEAM_ID")
private Long id;
private String name;
@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();
}
// 사용 예시
public Member createMember(String name, RoleType roleType, Long id){
Member member = new Member();
Team team = teamRepository.findById(id).isPresent() ? teamRepository.findById(id).get() : null;
member.setUsername(name);
member.setTeam(team);
member.setRoleType(roleType);
List<Member> members = team.getMembers();
for(Member m : members){
System.out.println("member name = " + m.getUsername);
}
return memberRepository.save(member);
}
연관관계 주인의 특징은 아래와 같다.
1. 연관관계의 주인만이 외래 키를 관리(등록, 수정)
2. 주인이 아닌 쪽은 읽기만 가능하다.
3. 주인은 mappedBy 속성을 사용하지 않는다.
4. 주인이 아닐 경우 mappedBy 속성으로 주인을 지정한다.
5. 외래키가 있는 곳을 주인으로 정한다.
6. 예시의 경우 Member.team이 주인