Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

일대일[1:1] 본문

인프런/[인프런] 자바ORM 표준 JPA 프로그래밍

일대일[1:1]

Seung__ 2021. 8. 10. 23:31

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