반응형
관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현 할 수 없다.
연결 테이블을 추가해서 일대다, 다대일 관계로 풀어야 한다.
반면에 객체는 컬렉션을 사용해서 객체 2개로 다대다 관계를 만들 수 있다.
객체를 @ManyToMany 로 맵핑하면 JPA는 이를 연결 테이블로 만들어 준다 이떄 주인이 되는 쪽에서 @JoinColumn이 아닌
@JoinTable(name="MEMBER_PRODUCT")를 사용해줘야 한다. name 옵션에는 중간 테이블 이름을 적어주면 그 이름으로 양쪽의 프라이머리키를 외래키로 갖는 연결테이블이 만들어진다.
하지만 이 방법에는 중간 테이블에 다른 정보를 넣을 수 없다는 한계가 있어 왠만하면 쓰지 않는다고 한다.
위의 문제를 해결하기 위해 중간테이블을 엔티티로 만들어서 추가하여 . 아래 그림처럼 만드는 것이 더 좋다.
반응형
'JPA' 카테고리의 다른 글
JPA 공부 8 - Proxy (0) | 2021.06.05 |
---|---|
JPA 공부 7 - 상속관계 매핑 (0) | 2021.06.05 |
JPA 공부 5 - 일대일 연관관계(1:1) (0) | 2021.06.04 |
JPA 공부 4 - 일대다 단방향,양방향(1:N) (비추) (0) | 2021.06.04 |
JPA 공부 3 - 연관관계 매핑2 양방향 연관관계와 연관관계 주인 (0) | 2021.06.04 |