Spring JPA
[Spring JPA] 다대다 관계
hoondev3
2023. 1. 29. 15:19
다대다 관계의 문제점
관계형 db는 다대다 관계를 테이블 2개로 표현하지 못한다.
연결 테이블을 추가해서 일대다 다대일 관계로 풀어내야 한다.
하지만 객체에서는 컬렉션을 이용해 객체 2개만으로 다대다 관계를 구현할 수 있다.
하지만 이 방법은 실무에서 사용하면 안된다.
@ManyToMany 어노테이션으로 다대다 관계를 구현하면 테이블엔 자동으로 연결 테이블이 생성된다.
이 연결테이블은 매핑되지 않았기 때문에 우리가 원하는 컬럼을 매핑할 수 없다.
그리고 연결 테이블 때문에 쿼리가 자신이 생각하지 못한 쿼리가 나갈수 있다는 점도 있다.
다대다 관계 문제 해결
다대다 관계의 한계를 극복하는 점은 연결 테이블용 엔티티를 하나 더 많드는 것이다.
예를 들어 Member와 Product의 다대다 관계를 Member, MemberProduct, Product로 풀어내는 것이다.
이렇게 하면 다대다 관계를 일대다, 다대일 관계로 풀어낼 수 있다.