Java/JPA
양방향 연결 관계 mappedBy 속성
veryhi
2022. 2. 8. 12:09
두 객체가 양방향 연결 관계일 때는 mappedBy 속성을 사용한다.
자주 쓰이는 다대일 양방향 매핑을 예로 들어보자.
먼저 다대일 관계는 다(多)에 외래키가 있다.
즉 외래키를 가지는 연관관계의 주인은 다(多) 방향이 된다.
다 방향에는 당연히 @ManyToOne이, 일(一) 방향에는 당연히 @OneToMany가 선언되어 있다.
마지막으로 mappedBy는 주인이 아닌 쪽에서 사용 된다.
따라서 mappedBy는 @OneToMany의 속성으로 사용된다는 것을 알 수 있다.
@Entity
public class Member{
// ~ 이전 내용 ~
@ManyToOne
@JoinColumn(name="TEAM_ID")
private Team team;
// ~ 다음 내용 ~
}
@Entity
public class Team{
// ~ 이전 내용 ~
@OneToMany(mappedBy = "team")
@JoinColumn(name="TEAM_ID")
private Team team;
// ~ 다음 내용 ~
}
즉 위에서는 다(多) 측인 Member가 Team의 외래키 필드를 갖게 된다고 할 수 있다.
이것이 왜 필요한지에 대해 간단히 요약하면,
객체 간의 양방향 참조에 유용하게 사용될 수 있기 때문이다.