[5단원] 양방향 매핑의 규칙 : 연관관계의 주인

  • 양방향 관계를 매핑하는 경우
    • 연관관계의 주인 을 명확하게 정해야합니다.
    • 연관관계의 주인이란
      • 외래 키의 관리 권한을 가지는 쪽
      • 오직 주인만이 외래 키 등을 관리 ( 등록 , 수정 , 삭제 등) 할 수 있습니다.

    규칙

    1. 연관관계의 주인은 mappedBy 속성을 사용하지 않습니다.
    1. 연관관계의 주인이 아닌 쪽은 mappedBy 속성을 사용해야합니다.
      1. 해당 속성 값으로는 연관관계의 주인이 되는 필드의 이름을 지정합니다.
    class Member {
        @ManyToOne
        @JoinColumn(name="TEAM_ID")
        private Team team;
    }
    class Team {
        @OneToMany(mappedBy = "team") // 주인이 아닌쪽.
        private List<Member> members = new ArrayList<Member>();
    }

    선택의 기준?

    • 외래 키가 있는 쪽을 주인으로 선택해야합니다.
    • Member 테이블에 TEAM_ID 라는 외래 키가 존재하기에, Member 엔티티의 team 필드를 연관관계의 주인으로 선택하는 것이 자연스럽다.
      • 외래 키가 있는 쪽이 연관관계의 주인이라면 , 해당 테이블에 직접 외래키를 관리할 수 있음
      • 없는 쪽이라면, 별도 다른 테이블에 외래 키를 간접적으로 관리해야하는 문제가 발생함.

데이터베이스 테이블의 다대일 또는 일대다 관계에서는 항상 "다" 쪽에 외래 키가 있습니다


Uploaded by N2T