다양한 연관관계 맵핑4(N:N)

Mina Park·2022년 9월 9일
0
  • 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계 표현이 불가
  • 연결 테이블을 추가하여 1:N, N:1로 풀어내야함

  • 객체의 경우, 컬렉션을 사용하여 객체 2개만으로도 다대다 관계 표현이 가능

  • @ManyToMany 사용, @JoinTable로 연결 테이블 지정

    • 다대다 맵핑: 단방향/양방향 모두 가능

편리해보이지만 실무에서는 사용 X

  • 연결테이블의 경우 단순 연결 역할만 하는것이 아님
  • 보통 맵핑 정보 외 추가 정보들이 들어가기 때문
  • 연결테이블 존재로 인해 쿼리 복잡도 증가

📌 다대다 한계 극복방법

  • 연결테이블용 엔티티 추가(연결테이블을 엔티티로 승격)

  • 연결테이블의 경우 PK는 되도록 generatedValue 로 사용하고, 양쪽 테이블의 외래키는 PK로 설정하지 않는 것을 권장(유연성 고려)
  • 2개의 PK를 가질경우 JPA에서는 컴포지트 키를 따로 만들어줘야 하기도 함
  • 실무에서는 계속 변경되기 때문에 유연성을 고려해서 모든 테이블에 generatedValue(비즈니스 로직이 없는 단순 구분값)를 깔아놓고 필요하면 제약조건을 추가하는 방식 권장

0개의 댓글