[JPA] 다대다 관계, @ManyToMany

jhkim·2022년 11월 13일
0

Spring

목록 보기
3/7
post-thumbnail

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/unit/24282?tab=curriculum

위 강의를 듣던 중, 다대다 관계를 일대다 + 다대일 관계로 설계한 것을 보았다.
찾아보니 다대다 관계는 실무에서 사용하지 않는 것을 추천한다고 한다. 왜일까?

객체는 다대다 관계를 표현할 수 있으나, 관계형 데이터베이스는 정규화된 테이블 두 개로 다대다 관계를 표현할 수 없다.
따라서 다대다 관계의 연결다리 역할을 하는 조인 테이블을 추가한다.


이 때, 다대다 매핑은 연결 테이블에 단순히 매핑 정보만 넣을 수 있다. 추가 정보를 넣을 수 없다.
하지만 실무에서는 추가 정보를 넣어야 할 때가 있다.


가령, 회원이 상품을 주문하는 경우를 생각해보자.

이 경우 주문 수량 등의 정보 또한 연결 테이블에 저장되어야 한다.
이럴 때 필요한 것이 다대다 관계를 일대다-다대일로 풀어내는 방법이다.

@ManyToMany를 이용해서 다대다 관계로 표현하지 않고,
양 끝단에서 @OneToMany로 연결테이블과 연결하고,
연결 테이블의 엔티티에서는 양 끝의 엔티티를@ManyToOne로 매핑하여 중간다리 역할을 하도록 한다.

주문 상품 테이블에는
주문 수량과, 주문 시점의 금액 정보가 담긴다.

코드는 아래 블로그를 참고할것!


참고 링크
https://ict-nroo.tistory.com/127

0개의 댓글