양방향 연관관계 및 연관관계의 주인에 대해 이해한다.

인프런 강의 참고

양방향 연관관계와 연관관계의 주인

양방향 연관관계

그림 추가

예제

@Entity
public class Member {
  @Id
  @GeneratedValue
  @Column(name = "MEMBER_ID")
  private Long id;
  
  @Column(name = "USERNAME")
  private String username;
  
  private int age;

  @ManyToOne // N:1
  @JoinColumn(name = "TEAM_ID")
  private Team team;
  ...
}
@Entity
public class Team {
  @Id
  @GeneratedValue
  @Column(name = "TEAM_ID")
  private Long id;
  
  private String name;
  
  @OneToMany(mappedBy = "team") // 1:N
  private List<Member> members = new ArrayList<Member>(); // 초기화 (관례) - NullPointerException 방지 
  ...
}

연관관계 주인과 mappedBy

객체와 테이블간에 연관관계를 맺는 차이

객체 연관관계 = 2개

테이블 연관관계 = 1개

둘 중 하나로 외래 키를 관리해야 한다

그림 추가

연관관계의 주인(Owner)

양방향 매핑 규칙

누구를 주인으로 해야 할까?

그림 추가

주인인 객체와 주인이 아닌 객체의 구현 방법


관련된 Post

Reference