JPA
연관관계 편의 메소드
주씨.
2024. 4. 2. 13:55
728x90
@Entity
@Getter
public class Member {
@Id
@Column(name = "MEMBER_ID")
private String id;
private String username;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
//==연관관계 메소드==//
public void setTeam(Team team){
// 기존 팀과 관계를 제거
if (this.team != null){
this.team.getMembers().remove(this);
}
this.team = team;
team.getMembers().add(this);
}
}
- 한 번에 양방향 관계를 설정하는 메소드를 연관관계 편의 메소드라 한다.
- member.setTeam(team) 과 team.getMembers().add(member) 를 각각 호출하다 보면 실수로 둘 중 하나만 호출해서 양방향이 깨질 수 있기 때문에, 두 코드를 하나인 것처럼 사용하는 것이 안전하다.
- 연관관계를 변경할 떄에는 기존 팀이 있으면 기존 팀과 회원의 연관관계를 삭제하는 코드를 추가해야 한다.
*참고
- 관계를 변경하고 영속성 컨텍스트가 아직 살아있는 상태에서 teamA의 getMembers() 를 호출하면 member1 이 반환된다.
- 따라서 변경된 연관관계는 설명한 것처럼 관계를 제거한느 것이 안전하다.