JPA/Annotation
@JoinColumn
by BAYABA
2021. 10. 6.
- 개인 공부 목적으로 작성한 글입니다.
- 아래 출처를 참고하여 작성하였습니다.
목차
- @JoinColumn이란?
- with @OneToOne
- with @ManyToOne
1. @JoinColumn이란?
- @JoinColumn은 엔티티 연관관계나 Collection 연관관계에서 조인 대상이 되는 Column을 나타냅니다.
2. with @OneToOne
- @OneToOne과 함께 쓰이는 @JoinColumn은 현재 엔티티가 참조하는 refer 엔티티의 기본키를 해당 필드로 나타냅니다.
- DB 상으로는 외래키로 잡히는 것이고, JPA 상으로는 객체가 매핑되어 있을 것입니다.
@Entity
public class Office {
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "addressId")
private Address address;
}
3. with @ManyToOne
- Employee(1) : Email(다)의 관계입니다.
- 연관관계의 주인인 Email은 Join Column으로 Employee를 가지고 있고, 이는 Employee 엔티티에 대한 외래키를 의미합니다.
- Join Column은 연관관계의 주인쪽에 나타납니다.
@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;
}
출처
- @JoinColumn Annotation Explained