반응형
1 : 1은 반대도 일대일이다.
외래키를 둘 중 한 곳에만 넣으면 된다.
외래키에 데이터베이스 유니크 제약조건을 추가를 해야한다.
일대일 관계는 간단하게 구현할 수 있다.
@Entity
public class Locker {
@Id @GeneratedValue
private Long id;
private String name;
}
Locker에 간단하게 id와 name를 만들어준다.
@Entity
public class Member {
@OneToOne
@JoinColumn(name = "LOCKER_ID")
private Locker locker;
}
Member에서 @OneToOne를 통해 Locker를 1대1 매핑한다.
@JoinColumn 어노테이션 정도는 사용해 줘야 깔끔하게 정리가 된다.
여기서 만약 양방향 매핑을 원하면 아래와 같이 추가를 해주면 된다.
@Entity
public class Locker {
@Id @GeneratedValue
private Long id;
private String name;
@OneToOne(mappedBy = "locker")
private Member member;
}
이러면 member는 읽기 전용이 된다.
다대일 양방향 매핑은 외래 키가 있는 곳이 연관관계의 주인이다. 반대편은 위와 같이 mappedBy를 적용한다.
- 주 테이블에 외래키
주 테이블 조회로 대상 테이블 데이터까지 확인이 가능하지만 값이 없으면 외래키에 null이 허용된다는 단점이 있다.
객체지향 개발자가 선호한다.
- 대상 테이블에 외래키
주 테이블과 대상 테이블을 1:1에서 1:N으로 변경할 때 테이블 구조를 유지할 수 있지만 프록시 기능의 한계로 지연 로딩으로 설정해도 항상 즉시 로딩되는 단점이 있다.
전통적인 데이터베이스 개발자가 선호한다.
양방향으로 만들어야 한다.
자바 ORM 표준 JPA 프로그래밍 - 기본편을 참고하여 공부하였습니다.
반응형
'Data Base > JPA' 카테고리의 다른 글
[JPA] : 일대다, 1:N (0) | 2022.04.13 |
---|---|
[JPA] : 다대일, N:1 (0) | 2022.04.11 |
[JPA] : 연관관계 매핑 시작하기 (0) | 2022.04.09 |
[JPA] : 양방향 연관관계와 연관관계의 주인(Owner)에 대한 주의점 (0) | 2022.04.08 |
[JPA] : 양방향 연관관계, 연관관계 주인(Owner) (0) | 2022.04.08 |
댓글