Spring JPA

[Spring JPA] 다대다 관계

hoondev3 2023. 1. 29. 15:19

다대다 관계의 문제점

관계형 db는 다대다 관계를 테이블 2개로 표현하지 못한다.

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

 

하지만 객체에서는 컬렉션을 이용해 객체 2개만으로 다대다 관계를 구현할 수 있다.

하지만 이 방법은 실무에서 사용하면 안된다.

 

@ManyToMany 어노테이션으로 다대다 관계를 구현하면 테이블엔 자동으로 연결 테이블이 생성된다.

이 연결테이블은 매핑되지 않았기 때문에 우리가 원하는 컬럼을 매핑할 수 없다.

그리고 연결 테이블 때문에 쿼리가 자신이 생각하지 못한 쿼리가 나갈수 있다는 점도 있다.

 

다대다 관계 문제 해결

다대다 관계의 한계를 극복하는 점은 연결 테이블용 엔티티를 하나 더 많드는 것이다.

예를 들어 Member와 Product의 다대다 관계를 Member, MemberProduct, Product로 풀어내는 것이다.

이렇게 하면 다대다 관계를 일대다, 다대일 관계로 풀어낼 수 있다.

 

Reference

https://www.inflearn.com/course/ORM-JPA-Basic