객체의 경우, 컬렉션을 사용하여 객체 2개만으로도 다대다 관계 표현이 가능
@ManyToMany 사용, @JoinTable로 연결 테이블 지정
편리해보이지만 실무에서는 사용 X
- 연결테이블의 경우 단순 연결 역할만 하는것이 아님
- 보통 맵핑 정보 외 추가 정보들이 들어가기 때문
- 연결테이블 존재로 인해 쿼리 복잡도 증가
📌 다대다 한계 극복방법
- 연결테이블의 경우 PK는 되도록 generatedValue 로 사용하고, 양쪽 테이블의 외래키는 PK로 설정하지 않는 것을 권장(유연성 고려)
- 2개의 PK를 가질경우 JPA에서는 컴포지트 키를 따로 만들어줘야 하기도 함
- 실무에서는 계속 변경되기 때문에 유연성을 고려해서 모든 테이블에 generatedValue(비즈니스 로직이 없는 단순 구분값)를 깔아놓고 필요하면 제약조건을 추가하는 방식 권장