다중성
JPA는 객체가 기준이지만, 다중성은 데이터베이스가 기준이다.
연관 관계는 대칭성을 갖는다.
다대다
실무 사용 금지 ❌
- 중간 테이블이 숨겨져 있기 때문에 자기도 모르는 복잡한 조인의 쿼리(Query)가 발생하는 경우가 생길 수 있다.
- 다대다로 자동생성된 중간테이블은 두 객체의 테이블의 외래 키만 저장되기 때문에 문제가 될 확률이 높다. JPA를 해보면 중간 테이블에 외래 키 외에 다른 정보가 들어가는 경우가 많기 때문이다.
🙋♀️ 예로, 회원과 상품 테이블이 있다고 가정해보자. 회원이 상품을 주문하면, 연결테이블에 단순히 주문한 회원 아이디와 상품 아디이만 담고 끝나지 않는다. 보통은 연결 테이블에 주문 수량 컬럼이나 주문한 날짜 같은 컬럼이 더 필요하다.
그래서, 다대다를 일대다, 다대일로 풀어서 만드는 것(중간 테이블을 Entity로 만드는 것)이 추후 변경에도 유연하게 대처할 수 있다.
References