연관관계 매핑시 고려사항 3가지
다중성
- 다대일 : @ManyToOne
- 일대다 : @OneToMany
- 일대일 : @OneToOne
- 다대다 : @ManyToMany
단방향, 역방향
- 테이블
- 외래 키 하나로 양쪽 조인 가능
- 방향이라는 개념이 특별히 없음
- 객체
- 참조용 필드가 있는 쪽으로만 참조 가능
- 한쪽만 참조하면 단방향
- 양쪽이 서로 참조하면 양방향
연관관계의 주인
- 객체 양방향 관계에서 외래 키를 관리하는 참조 설정
- 반대편은 외래 키에 영향을 주지 않고, 조회만 가능
다대일 [N:1]
- 다대일 단방향 : 가장 많이 사용하는 연관관계
- 다대일 양방향 : 외래 키가 있는 쪽이 연관관계의 주인
일대다 [1:N]
- 일대다 단방향 : 일(1)이 연관관계의 주인
- 다른 테이블인 다(N)에 외래 키가 존재하여, UPDATE SQL 실행
- @JoinColumn 필수 (사용하지 않으면 조인 테이블 방식으로 사용됨)
- 일대다 양방향 : 읽기 전용 필드를 통해 양방향처럼 사용
일대일 [1:1]
- 다대일 매핑과 유사함
- 주 테이블에 외래 키
- 대상 테이블에 외래 키
다대다 [N:M]
- 관계형 데이터베이스는 연결 테이블을 추가하여 일대다, 다대일 관계로 가능
- 객체는 컬렉션을 사용하여 다대다 관계 가능
- @ManyToMany, @JoinTable
- 실무에서 거의 사용하지 않음
자바 ORM 표준 JPA 프로그래밍 - 김영한, 인프런