본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


JPA

JPA 공부 6 - 다대다 연관관계(N:N)

반응형

관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현 할 수 없다. 

 

연결 테이블을 추가해서 일대다, 다대일 관계로 풀어야 한다.

 

반면에 객체는 컬렉션을 사용해서 객체 2개로 다대다 관계를 만들 수 있다.

 

객체를 @ManyToMany 로 맵핑하면  JPA는 이를 연결 테이블로 만들어 준다 이떄 주인이 되는 쪽에서 @JoinColumn이 아닌

@JoinTable(name="MEMBER_PRODUCT")를 사용해줘야 한다.  name 옵션에는 중간 테이블 이름을 적어주면 그 이름으로 양쪽의 프라이머리키를 외래키로 갖는 연결테이블이 만들어진다. 

 

하지만 이 방법에는 중간 테이블에 다른 정보를 넣을 수 없다는 한계가 있어 왠만하면 쓰지 않는다고 한다.  

 

 

 

위의 문제를 해결하기 위해 중간테이블을 엔티티로 만들어서 추가하여  .   아래 그림처럼 만드는 것이 더 좋다.

반응형