# 다대다

다대다 매핑의 한계\
매핑 정보만 들어가고 수정하는 데이터가 들어갈 수 없음.

![다대다 매핑 한계](blob:https://app.gitbook.com/58dbd72a-80a9-476b-aa1d-d0519c2c14b4)

@ManyToMany 사용 : 중간 테이블을 생성하면 가능하기도 함\
@JoinTable로 연결 테이블 지정 가능\
PK가 2개  = MEMBER\_ID, PRODUCTID로 하고 각각 FK로 사용\
\=>애플리케이션은 계속해서 변하고 수정해야하는데 ID가 어딘가에 종속적이면 제약사항들이 많아진다.

![중간 테이블 생성](blob:https://app.gitbook.com/43e27fc1-39da-4fd9-a4a3-d7fceb4fba31)

그렇기 때문에 이렇게 PK를 2개 설정하는 것보다 GeneratedValue로 생성되는 id 값을 PK로 잡고, MEMBER\_ID, PRODUCTID 는 FK로 잡는 것이 나중에 확장성이 좋다! 변경가능성이 있기 때문이다! 나중에 필요하다면 제약조건을 추가하면 된다.

다대다 한계 극복

연결 테이블용 엔티티 추가(연결 테이블을 엔티티로 승격)\
@ManyToMany -> @OneToMany, @ManyToOne

![중간 엔티티 ORDER 생성](blob:https://app.gitbook.com/c59328b4-8495-4339-984c-83af0ebc7fc9)
