JPA

[JPA 11] 연관관계 - @OneToOne

snowkit 2022. 3. 10. 21:39

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 = "소유측 객체에 선언된 참조측 객체의 변수명")으로 연관관계의 참조측과 소유측을 설정한다

'JPA' 카테고리의 다른 글

[JPA 13] 상속관계 구현  (0) 2022.03.11
[JPA 12] 연관관계 - @ManyToMany  (0) 2022.03.10
[JPA 10] 연관관계 - 연관관계 매핑 편의성  (0) 2022.03.10
[JPA 9] 연관관계 - 저장, 변경  (0) 2022.03.10
[JPA 8] 연관관계 - 방향성  (0) 2022.03.10