- 일대일 관계 구성시
- 객체지향 개발자들은 주 테이블에 외래 키를 선호한다.
단방향 관계
- 회원과 사물함의 일대일 관계
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;
}
양방향
Member
와Locker
사이에 일대일 양방향 연관관계가 형성되어 있음.
@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 |