Spring/JPA

태태개발일지 - ManyToMany

태태코 2024. 11. 15. 14:38
반응형

ManyToMany

 

* 실무에서 ManyToMany 관계를 사용하는 경우는 거의없다. * => 아래 이유를 설명하겠다.

 

일단 N:N관계에 ManyToMany 어너테이션을 사용하게된다.

사실 상 DB에서 N:N 관계에 정규화된 테이블에 연관을 맺게되려면, 무조건 가운데 테이블을 하나 생성하고 만들게된다.

ex)

출처: jaewonna.tistory.com/62

 

그렇다면 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