- 양방향 관계를 매핑하는 경우
연관관계의 주인
을 명확하게 정해야합니다.
- 연관관계의 주인이란
- 외래 키의 관리 권한을 가지는 쪽
- 오직 주인만이 외래 키 등을 관리 ( 등록 , 수정 , 삭제 등) 할 수 있습니다.
규칙
- 연관관계의 주인은
mappedBy
속성을 사용하지 않습니다.
- 연관관계의 주인이 아닌 쪽은
mappedBy
속성을 사용해야합니다.- 해당 속성 값으로는 연관관계의 주인이 되는 필드의 이름을 지정합니다.
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
'자바 > JPA' 카테고리의 다른 글
[5단원] 연관관계의 사용 (0) | 2023.11.01 |
---|---|
[5단원] 양방향 연관관계의 매핑 (0) | 2023.11.01 |
[6단원] 다대일 단방향 [N:1] 연관관계 (0) | 2023.11.01 |
[6단원] 일대다 단방향 관계[1:N] (0) | 2023.11.01 |
[6단원] 일대다 단방향 관계[1:N] (0) | 2023.11.01 |