반응형
ManyToMany
* 실무에서 ManyToMany 관계를 사용하는 경우는 거의없다. * => 아래 이유를 설명하겠다.
일단 N:N관계에 ManyToMany 어너테이션을 사용하게된다.
사실 상 DB에서 N:N 관계에 정규화된 테이블에 연관을 맺게되려면, 무조건 가운데 테이블을 하나 생성하고 만들게된다.
ex)
그렇다면 JPA 에서 ManyToMany는 무엇인가?
ManyToMany를 선언하게 된다면, 그냥 저 가운데 테이블이 메핑이 되는 것이다.
ex)
public member{
@Id
private Long id;
@ManyToMany
@JoinColumn(name = "MEMBER_ID")
private List<Team> teams;
}
public Team{
@Id
private Long id;
@ManyToMany
@JoinColumn(name = "TEAM_ID")
private List<Member> members;
}
하.지.만
JPA에서는 ManyToMany를 사용하지않고, 실제 새로운 테이블에 ManyToOne <=> OneToMany로 메핑시켜서, 연관관계를 맺는다.
이유는
1. ManyToMany를 사용할 경우에는 가운데 테이블에 서로의 PK만 있을 뿐, 새로운 컬럼이나 다른 것을 추가할 수 없다.
2. Pk는 가장 심플하게 새로운 테이블에 ID로 만들어 주는 것이 좋고, 그것이 확장성 도 좋기 때문이다.
새로운 테이블을 만들어 서로의 PK를 메핑시키고 ManyToMany의 사용을 자제하자.
반응형
'Spring > JPA' 카테고리의 다른 글
태태개발일지 - JPA 슈퍼타입 (1) | 2024.11.20 |
---|---|
태태개발일지 - ActionQueue (3) | 2024.11.18 |
태태개발일지 - OneToOne (0) | 2024.11.15 |
태태개발일지 - JPA 연관관계 (0) | 2024.11.14 |
태태개발일지 - JPA Auditing (2) | 2024.10.22 |