엔티티의 연관관계 매핑시 고려할거 정리

JPA

고려할건 크게 3가지다.

  • 다중성
  • 단방향, 양방향
  • 연관관계의 주인

다중성 : 두 엔티티의 연관관계를 나타냄 (예: 일대다,다대일,일대일,다대다) 다중성을 판단하기 힘들땐 반대방향을 생각하면 됨 (일대다의 반대는 다대일)

  • 다대일(@ManyToOne)
  • 일대다(@OneToMany)
  • 일대일(@OneToOne)
  • 다대다(@ManyToMany)

    단방향, 양방향

  • 객체의 참조용필드를 한쪽만 가지고 조회하면 단방향

  • 객체의 참조용필드를 양쪽에 가지고 조회하면 양방향
  • 데이터베이스 테이블은 외래키로 조회를하기에 방향이 없다.

연관관계의 주인 : JPA는 두 객체 연관관계 중 하나를 정해서 데이터베이스 외래 키를 관리하는데 이것을 연관관계의 주인이라 한다.

  • 외래 키를 가진 테이블과 매핑한 엔티티가 외래 키를 관리하는 게 효율적이므로 보통 이곳을 연관관계의 주인으로 선택한다.
  • 연관관계의 주인이 아닌곳은 mappedBy를 써서 연관관계의 주인 필드 이름값을 입력해야 한다.

출처 : 자바 ORM 표준 JPA 프로그래밍 김영한