본문 바로가기

Develop/Backend 가이드

[Spring] JPA Mapping - @OneToOne

반응형

@OneToOne
One To One

@OneToOne

@OneToOne 관계를 정의하는 방법은 여러가지가 있습니다.

Foreign Key 를 등록하는 방법

// Customer class
@OneToOne
// Foreign Key 를 참조할 곳을 지정합니다.
@JoinColumn(name="record_id")
public Record record;
// Record class
// Foreign Key 를 제공하는 속성을 지정합니다.
@OneToOne(mappedBy="record")
public Customer customer;

Foreign Key를 제공하는 Entity와 제공받는 Entity로 생성됩니다. 제공받는 Entity는 반드시 @JoinColumn 으로 참조할 곳을 지정해줘야 하고, 제공하는 Entity는 제공받는 Entity 의 변수명을 mappedBy 값으로 지정해줍니다.

Primary Key 를 공유하는 방법

    @Entity
    public class Employee {
        @Id Integer id;

        // Employee.id 값으로 연결될 EmployeeInfo를 지정한다.
        @OneToOne @MapsId
        EmployeeInfo info;
    }
    @Entity
    public class EmployeeInfo {
        // Employee.id 값과 동일한 값으로 설정되므로, @GeneratedValue 를 사용해서는 안된다.
        @Id Integer id;
    }

@MapsId 로 동일한 Primary Key를 공유하게 됩니다.

반응형