JPA @JoinColumn Annotation
1. @OneToOne 매핑 예제
@JoinColumn
주석과 @OneToOne
매핑을 결합하면 소유자 엔터티의 주어진 열이 참조 엔터티의 기본 키를 참조한다는 것을 나타낸다.
1
2
3
4
5
6
@Entity
public class Office {
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "addressId")
private Address address;
}
위의 코드 예제는 Office 엔터티를 Address 엔터티의 기본 키와 연결하는 외래 키를 생성한다. Office 엔터티의 외래 키 열 이름은 name 속성으로 지정된다.
2. @OneToMany 매핑 예제
@OneToMany
매핑을 사용하는 경우 mappedBy 매개변수를 사용하여 지정된 열이 다른 엔터티의 소유임을 나타낼 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Entity
public class Employee {
@Id
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "employee")
private List<Email> emails;
}
@Entity
public class Email {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "employee_id")
private Employee employee;
}
위의 예에서 Email(소유자 엔터티)에는 ID 값을 저장하는 조인 열 employee_id가 있으며 Employee 엔터티에 대한 외래 키가 있다.
3. @JoinColumns
여러 개의 조인 열을 생성하려는 상황에서는 @JoinColumns
주석을 사용할 수 있다.
1
2
3
4
5
6
7
8
9
@Entity
public class Office {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name="ADDR_ID", referencedColumnName="ID"),
@JoinColumn(name="ADDR_ZIP", referencedColumnName="ZIP")
})
private Address address;
}
위의 예제에서는 Address 엔터티의 ID 및 ZIP 열을 가리키는 두 개의 외래 키를 생성한다.
[출처 및 참고]
This post is licensed under CC BY 4.0 by the author.