고려할건 크게 3가지다.
- 다중성
- 단방향, 양방향
- 연관관계의 주인
다중성 : 두 엔티티의 연관관계를 나타냄 (예: 일대다,다대일,일대일,다대다) 다중성을 판단하기 힘들땐 반대방향을 생각하면 됨 (일대다의 반대는 다대일)
- 다대일(@ManyToOne)
- 일대다(@OneToMany)
- 일대일(@OneToOne)
다대다(@ManyToMany)
단방향, 양방향
객체의 참조용필드를 한쪽만 가지고 조회하면 단방향
- 객체의 참조용필드를 양쪽에 가지고 조회하면 양방향
- 데이터베이스 테이블은 외래키로 조회를하기에 방향이 없다.
연관관계의 주인 : JPA는 두 객체 연관관계 중 하나를 정해서 데이터베이스 외래 키를 관리하는데 이것을 연관관계의 주인이라 한다.
- 외래 키를 가진 테이블과 매핑한 엔티티가 외래 키를 관리하는 게 효율적이므로 보통 이곳을 연관관계의 주인으로 선택한다.
- 연관관계의 주인이 아닌곳은 mappedBy를 써서 연관관계의 주인 필드 이름값을 입력해야 한다.
출처 : 자바 ORM 표준 JPA 프로그래밍 김영한