본문 바로가기
Spring Study/JPA 기본

[JPA] 다양한 연관관계 매핑

by 정재인 2023. 10. 30.

연관관계 매핑시 고려사항

1. 다중성

· 다대일: @ManyToOne

· 일대다: @OneToMany

· 일대일: @OneToOne

· 다대다: @ManyToMany

 

2. 단방향, 양방향

테이블

· 외래 키 하나로 양쪽 조인 가능

· 방향이라는 개념 X

 

객체

· 참조용 필드가 있는 쪽으로만 참조 가능

· 한쪽만 참조하면 단방향

· 양쪽이 서로 참조하면 양방향

 

3. 연관관계의 주인

· 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음

· 객체 양방햔 관계는 A→B, B→A 처럼 참조가 2개

· 연관관계의 주인: 외래 키를 관리하는 참조

· 주인의 반대편: 외래 키에 영향을 주지 않고 단순 조회만 가능

 


다대일 단방향

· 가장 많이 사용하는 연관관계

· 다대일의 반대는 일대다

 

다대일 양방향

· 외래 키가 있는 쪽이 연관관계의 주인

· 양쪽을 서로 참조하도록 개발

 

일대다 단방향

 

· 일대다 단방향은 '일'이 연관관계의 주인

· '다'쪽에 외래 키가 존재

· 객체와 테이블의 차이 때문에 반대편 테이블의 외래 키를 관리하는 특이한 구조

· @JoinColumn을 꼭 사용해야 함

 

일대다 양방향

· 공식적으로 존재하지 않음

· 읽기 전용 필드를 사용해 양방향처럼 사용하는 방법

 

일대일

· 일대일 관계는 반대도 일대일

· 주 테이블이나 대상 테이블 중 외래 키 선택 가능

 - 주 테이블에 외래키

 - 대상 테이블에 외래키

· 외래 키에 데이터베이스 유니크 제약조건 추가

 

일대일: 주 테이블에 외래 키 단방향

· 다대일(@ManyToOne) 단방향 매핑과 유사

 

일대일: 주 테이블에 외래 키 양방향

· 다대일 양방향 매핑처럼 외래 키가 있는 곳이 연관관계의 주인

· 반대편은 mappedBy 적용

 

일대일: 대상 테이블에 외래 키 단방향

· 단방향 관계는 JPA 지원 X

· 양방향 관계는 지원

 

일대일: 대상 테이블에 외래 키 양방향

· 일대일 주 테이블에 외래 키 양방향과 매핑 방법 동일

 

다대다

· 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없음

· 즉, 연결 테이블을 추가해 일대다, 다대일 관계로 풀어내야 함

 

 

'Spring Study > JPA 기본' 카테고리의 다른 글

[JPA] 프록시와 연관관계 관리  (1) 2023.11.01
[JPA] 고급 매핑  (0) 2023.10.31
[JPA] 연관관계 매핑  (0) 2023.10.18
[JPA] 엔티티 매핑 (Entity Mapping)  (0) 2023.10.17
[JPA] 영속성 관리  (0) 2023.10.17

댓글