[6단원] 주 테이블에 외래키

  • 일대일 관계 구성시
  • 객체지향 개발자들은 주 테이블에 외래 키를 선호한다.

단방향 관계

  • 회원과 사물함의 일대일 관계
    • MEMBER 테이블은 주 테이블
    • LOCKER 테이블은 대상 테이블

@Entity
public class Member {
    @Id 
    @GeneratedValue
    @Column(name = "MEMBER_ID")
    private Long id;
    private String username;

    @OneToOne
    @JoinColumn(name = "LOCKER_ID")
    private Locker locker;
}
@Entity
public class Locker {
    @Id 
    @GeneratedValue
    @Column(name = "LOCKER_ID")
    private Long id;
    private String name;
}

양방향

  • MemberLocker 사이에 일대일 양방향 연관관계가 형성되어 있음.
@Entity
public class Member {
    @Id @GeneratedValue
    @Column(name = "MEMBER_ID")
    private Long id;
    private String username;

    @OneToOne(mappedBy = "member")
    private Locker locker;
}

@Entity
public class Locker {
    @Id @GeneratedValue
    @Column(name = "LOCKER_ID")
    private Long id;
    private String name;

    @OneToOne
    @JoinColumn(name = "MEMBER_ID")
    private Member member;
}
  • FK 를 가진 Locker 테이블에서 외래 키 관리하기에
    • @JoinColumn 사용은 Locker 쪽에서 함

  • 프록시 사용시 외래 키를 직접 관리하지 않는 일대일 관계의 경우
    • 지연로딩으로 설정해도 즉시 로딩이 되는 문제가 있음.
    • 프록시의 한계


Uploaded by N2T

'자바 > JPA' 카테고리의 다른 글

JPA 고급 매핑  (0) 2023.11.04
[4단원] DDL 생성 기능  (0) 2023.11.04
[6단원] 다대다 : 연결 엔티티 사용  (0) 2023.11.04
[4단원] 기본 키 매핑  (0) 2023.11.01
[4단원] 기본 키 직접 할당 전략, IDENTITY 전략  (0) 2023.11.01