연관관계 매핑시 고려사항
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 |
댓글