1:1 관계 (One-To-One)
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
@Entity
public class Phone {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String number;
@OneToOne
@JoinColumn(name = "member_id")
private Member member;
}
- 일대일 관계에선 어디에서 외래 키를 관리해도 상관없다
- DB 관점에서 미래에 변경될 가능성을 생각하면 주 테이블이 아닌 부 테이블에서 외래 키를 관리하는 편이 좋다
- 외래 키를 관리하고 싶은 Entity의 연관된 객체에
@OneToOne
선언
@JoinColumn(name = "컬럼명")
으로 외래 키 컬럼명 지정
양방향 연관관계
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToOne(mappedBy = "member")
private Phone phone;
}
- 양방향 매핑을 하고 싶다면
@OneToOne(mappedBy = "소유측 객체에 선언된 참조측 객체의 변수명")
으로 연관관계의 참조측과 소유측을 설정한다