새소식

xub2의 개발 새발 🐾
💽 Database/JPA

[JPA] 연관관계 매핑 - 7 : 다대다 연관관계 [N:M]

2025. 9. 16. 12:14

  • -

다대다 연관관계

일단 그냥 쓰면 안된다 ㅋㅋ

사실, 객체끼리는 컬렉션으로 다대다를 구현할 수 있지만, 물리 DB는 다대다를 두개의 테이블로 해소할 수 없다.

이전에도 언급했듯이, 다대다 관계는 반드시 일대다 + 다대일 관계로 풀어내야한다.

사용하는 방법은 @ManyToMany + @JoinTable 연결 테이블을 지정하여 사용할 수 있다.

객체 두개로 해결할 수 있으니 상당히 편해보이지만, 사실 사용하면 안되는 관계이다.

 

연결 테이블은 단순히 연결만 하고 끝나지 않고, 추가로 수량과 같은 필드가 추가될 수 있다. 그리고 추가적으로 예상하지 못한 쿼리가 나갈 수도 있다.


다대다 극복방법

연결 테이블용 엔티티 추가 -> 중간테이블을 엔티티로 승격한다.

Order라는 중간 테이블을 만들어 MemberProduct와 매핑하여 중간테이블을 사용하는 방법으로 해소해야한다. -> @OneToMany + @ManyToOne

즉, 다대다 관계가 일대다 + 다대일 관계로 해소가 되었다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.