** 이 글은 자바 ORM 표준 JPA 프로그래밍 6장을 읽고 정리한 것입니다. **
다대일
객체 양방향 관계에서 연관관계의 주인은 항상 다쪽이다.
앙방향은 외래 키가 있는 쪽이 연관관계의 주인이다.
양방향 연관관계는 항상 서로를 참조해야 한다.
- 다대일 단방향(N:1)
- 다대일 양방향(N:1, 1:N)
일대다
엔티티를 하나 이상 참조할 수 있으므로 자바 컬렉션인 Collection, List, Set, Map 중에 하나를 사용해야 한다.
일대다 단방향(1:N)
일대다 단방향 매핑의 단점 : 매핑한 객체가 관리하는 외래 키가 다른 테이블에 있다는 점 -> 다른 테이블에 외래키가 있으면 연관관계 처리를 위한 UPDATE SQL을 추가로 실행해야 한다.
일대다 단방향 매핑보다는 다대일 양방향 매핑을 사용하자
다대일 양방향 매칭은 관리해야 하는 외래 키가 본인 테이블에 있다. 따라서 위의 단점을 해결할 수 있다.
일대다 양방향(1:N, N:1)
다대일 양방향과 같은 말이다.
일대일
일대일 관계는 그 반대도 일대일 관계이다.
일대일 관계에서 주 테이블이나 대상 테이블 둘 중 어느 곳이나 외래키를 가질 수 있다.
주 테이블에 외래 키 : 주 테이블만 확인해도 대상 테이블과 연관관계가 있는지 알 수 있다
대상 테이블에 외래 키 : 일대일에서 일대다로 변경할떄 테이블 구조를 그대로 유지할 수 있다.
다대다
관계형 데이터베이스는 다대다 관계를 일대다, 다대일 관계로 풀어내는 연결 테이블을 사용한다.
객체는 테이블과 다르게 객체 2개로 다대다 관계를 만들 수 있다 -> @ManyToMany를 사용해서 하면 된다.
(예시) 회원 객체는 컬렉션을 사용해서 상품들을 참조하면 되고, 반대로 상품들도 컬렉션을 사용해서 회원들을 참조하면 된다.
다대다 : 단방향
@ManyToMany와 @JoinTable을 사용해서 연결 테이블을 매핑하는 것
다대다 : 양방향
@ManyToMany를 사용, mappedBy로 연관관계의 주인을 지정한다.
다대다 : 매핑의 한계의 극복, 연결 엔티티 사용
@ManyToMany의 한계점 : 연결 테이블에 다른 컬럼들이 더 필요할 수도 있다.
✔️ 다대다 연관관계 정리
식별 관계 : 받아온 식별자를 기본키 + 외래키로 사용한다.
비식별 관계 : 받아온 식별자는 외래 키로만 사용하고 새로운 식별자를 추가한다.
참고
- 자바 ORM 표준 JPA 프로그래밍
'책 > 자바 ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
05. 연관관계 매핑 기초 (0) | 2023.05.08 |
---|