#06 다양한 연관관계 매핑
김영한 저 "자바 ORM 표준 JPA 프로그래밍, 2015"을 읽고 정리한 내용입니다.
엔티티 매핑시 고려사항 3가지
다중성 - ManyToOne, OneToMany, ManyToOne, ManyToMany 고려
단방향, 양방향 - 참조 방향 고려
연관관계 주인 - 양방향일 경우 고려할 사항
팁
보통 외래키를 가진 테이블과 매핑한 엔티티가 외래키를 관리한다.
연관관계 주인은 mappedBy 속성 사용 안함
6.1 다대일(ManyToOne)
6.1.1 다대일 단방향(unidirectional)
6.1.2 다대일 양방향(bidirectional)
@Entity
public class Member {
@Id
@GeneratedValue
@Column(name = "MEMBER_ID")
private Long id;
private String username;
@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);
}
}
}양방향 연관관계는 항상 서로를 참조해야 함
6.2 일대다(OneToMany)
6.2.1 1:N 단방향(unidirectional)
6.2.2 1:N 양방향(bidirectional)
6.3 일대일(OneToOne)
6.3.1 주 테이블에 외래 키
단방향
양방향
6.3.2 대상 테이블에 외래 키
단방향
양방향
6.4 다대다(ManyToMany)
단방향
양뱡항
다대다 : 매핑의 한계와 극복, 연결 엔티티 사용
다대다 : 새로운 기본 키 사용
Last updated