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 |
Tags
- SpringBoot
- jpa
- 알고리즘
- http
- Spring Boot
- 자바
- JPQL
- 스프링
- 스프링 핵심 원리
- 스프링 핵심 기능
- JDBC
- transaction
- kotlin
- Greedy
- spring
- 그리디
- 인프런
- java
- 백준
- QueryDSL
- AOP
- 김영한
- Android
- db
- Exception
- pointcut
- Servlet
- springdatajpa
- Thymeleaf
- Proxy
Archives
- Today
- Total
개발자되기 프로젝트
일대일[1:1] 본문
1. 일대일 관계
- 일대일 관계는 당연히 반대도 일대일
- 주 테이블이나 대상 테이블 중에 외래 키 선택 가능
- 주 테이블에 외래 키
- 대상 테이블에 외래 키
- 외래 키 데이터베이스 유니크(UNI) 제약조건 추가된 것이 일대일 관계
2. 주 테이블에 외래 키 단방향
- 다대일 단방향 매핑과 유사
- Member -> Locker
@OneToOne @JoinColumn(name = "LOCKIER_ID") private Locker locker;
3. 주 테이블에 외래키 양방향
- Member가 주인!
- Member -> Locker
@OneToOne @JoinColumn(name = "LOCKIER_ID") private Locker locker;
- Locker -> Member
@OneToOne(mappedBy = "locker") private Member member;
- 다대일 양방향이랑 유사함 ㅋㅋㅋㅋ
2. 주 테이블에 외래 키 양방향 정리
- 다대일 양방향 매핑 처럼 외래 키가 있는 곳이 연관관계 주인
- 반대편은 마찬가지로 mappedBy적용~
3. 대상 테이블에 외래 키 단방향
- 불가능~
- 대상 테이블에 양방향 관계는 지원함 ㅋㅋㅋㅋㅋㅋ
4. 대상 테이블에 외래 키 양방향
- 사실 대상 테이블 양방향이라기 보다는, MEMBER -> LOCKER로 바꾼 것.
- 결국 일대일 주 테이블에 외래 키 양방향과 동일함.
5. 일대일 정리
- 주 테이블에 외래 키
- 주 객체가 대상 객체의 참조를 가지는 것 처럼
주 테이블에 외래 키를 두고 대상 테이블을 찾음 - JPA 매핑 편함 ㅋㅋ
- 주 테이블만 조회해도 대상 테이블에 데이터가 있는지 확인 가능
- 대신 값이 없으면 외래키에 null을 허용 ㅜ
- 주 객체가 대상 객체의 참조를 가지는 것 처럼
- 대상 테이블에 외래 키
- 대상 테이블에 외래 키 존재함.
- 주 테이블과 대상 테이블을 일대일 에서 일대다 관꼐로 변경할 때 테이블 구조 유지
- JPA기본 프록시 기능의 한게로 지연 로딩으로 설정해도 항상 즉시 로딩됨..?
- Member의 프록시 객체를 만드려고 하면, 값이 있는지 없는지 알아야함.
- Member의 locker에 값이 있는지 없는지 보려면 MEMBER 테이블만 조회해선 알 수 없음.
- 그러니 어쨌든 LOCKER 테이블을 조회해야 하니 프록시로 만들 필요가 없음
- 그냥 즉시로딩으로 불러와버림.,즉 member조회하면 바로 locker 조회함.
- 지연로딩이 의미가 없다 ㅋㅋㅋ
'인프런 > [인프런] 자바ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
[예제] 다양한 연관관계 추가 (0) | 2021.08.11 |
---|---|
다대다[N:M] (0) | 2021.08.11 |
일대다[1:N] (0) | 2021.08.10 |
다대일 매핑[N:1] (0) | 2021.08.10 |
[예제] 연관관계 추가 (0) | 2021.08.10 |
Comments