Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 자바 ORM 표준 JPA 프로그래밍 7장
- KotlinInAction
- 고급매핑
- 객체 지향 설계와 스프링
- 스프링 핵심 원리 - 기본편
- Python
- 스프링 컨테이너와 스프링 빈
- 20055
- 백준 13460 Python
- 기능개발 python
- Kotlin in action 6장
- 싱글톤 컨테이너
- 컨베이어 벨트 위의 로봇 Python
- Kotlin in action 5장
- 백준 20055 컨베이어 벨트 위의 로봇
- Kotlin
- 20055 컨베이어 벨트 위의 로봇
- Kotlin In Action
- 코틀린
- kotlin in action 정리
- spring
- Kotlin in action 3장
- Kotlin in action 10장
- 7장 고급매핑
- 스프링 핵심 원리 이해
- 백준
- 스프링 핵심 원리
- 13460 구슬탈출 2
- 코틀린인액션
- 코틸린인액션
Archives
- Today
- Total
기록하는 습관
Spring - JPA (1) 연관관계 본문
연관 관계 정의 규칙
- 방향 : 단방향, 양방향 (객체 참조)
- 연관 관계의 주인 : 양방향일 때, 연관 관계에서 관리 주체
- 다중성 : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)
단방향, 양방향
- 데이터베이스: 외래 키 하나로 양 쪽 테이블 조인이 가능
- 객체: 참조용 필드가 있는 객체만 다른 객체를 참조하는 것이 가능
그렇기 때문에 두 객체 사이에 하나의 객체만 참조용 필드를 갖고 참조하면 단방향 관계, 두 객체 모두가 각각 참조용 필드를 갖고 참조하면 양방향 관계라고 한다.
엄밀하게는 양방향 관계는 없고 두 객체가 단방향 참조를 각각 가져서 양방향 관계처럼 사용하고 말하는 것.
단방향, 양방향 선택?
비즈니스 로직에서 두 객체가 참조가 필요한지 여부를 고민하기.
- GroupCondition.getGroup()처럼 참조가 필요하면 GroupCondition→Group 단방향참조
- 만약 참조가 굳이 필요없으면 참조를 안하면 됨
- Group.getGroupCondition()처럼 참조가 필요하면 Group→GroupCondition 단방향참조
- 만약 참조가 굳이 필요없으면 참조를 안하면 됨
이렇게 비즈니스 로직에 맞게 선택했는데 두 객체가 서로 단방향 참조를 했다면 양방향 연관 관계가 되는 것임.
참고)
무조건 양방향 설정을 하게 되면, 불필요한 연관관계 매핑으로 인해 복잡성이 증가한다.
따라서, 기본적으로 단방향 매핑 후 나중에 필요시 역방향으로 추가하는 것이 좋다.
양방향일 경우, 연관관계의 주인은?
연관 관계의 주인을 지정 하는 것은 두 단방향 관계(A→B, B→A)중, 제어의 권한(외래 키를 비롯한 테이블 레코드를 저장, 수정, 삭제 처리)을 갖는 실질적인 관계가 어떤 것인지 JPA에게 알려주는 것.
- 연관 관계의 주인: 연관 관계를 갖는 두 객체 사이에서 조회, 저장, 수정, 삭제 가능
- 연관 관계의 피주인: 조회만 가능.
연관관계 주인 정하는 법: 외래 키가 있는 곳!
'개발 > Spring' 카테고리의 다른 글
Spring - JPA (3) update 쿼리와 영속성 컨텍스트 (0) | 2022.07.12 |
---|---|
Spring - JPA (2) 다중성 (0) | 2022.07.12 |
스프링 핵심 원리 - 기본편 (5) - 컴포넌트 스캔 (0) | 2021.06.27 |
스프링 핵심 원리 - 기본편 (4) - 싱글톤 컨테이너 (0) | 2021.06.27 |
스프링 핵심 원리 - 기본편 (3) - 스프링 컨테이너와 스프링 빈 (0) | 2021.06.26 |
Comments