일대다 단방향
- 약간 특이하다(?)
- why?) 보통 외래키는 다쪽에 존재한다.
- INSERT 후, UPDATE가 추가 실행되어야 한다.
- 일대다 단방향 매핑보다는 다대일 양방향 매핑을 사용하자.
- 성능 이슈
- 관리의 부담
일대다 양방향
- 존재하지 않는다.
@ManyToOne
에는 mappedBy 속성이 없다insetable = false, updatable = false
를 추가하여 가능하나 권장하지 않는다.
일대일
- ex) 학생 vs 사물함
- 주 테이블(외래 키가 존재하는 테이블)가 주인이 될지, 대상 테이블이 주인이 될지 선택할 수 있다.
- 대상 테이블이 주인이 되는 경우, 단방향이 될 수 없다.
- why?) 매핑 방법이 없다. 그래야 양방향만 지원한다.
- 하지만 다대일으로 변경해야하는 경우 쉽게 변경이 가능하다.
다대다
- ex) 회원 vs 상품
- 관계형 데이터베이스는 다대다를 표현할 수 없다. (but, 중간 연계 테이블이 필요하다.)
member ─∈ member_product ∋─ product
@IdClass
- 복합키
public class MemberProductId implements Serializable { // hashCode and equals
새로운 기본 키
- 다대다가 아닌 일대다와 다대일을 조합
member ─∈ order ∋─ product