@JoinColumn
- 외래 키를 매핑할 때 사용한다.
속성 | 설명 | 기본값 |
---|---|---|
name | 매핑할 외래 키 이름 | 필드명 + _ + 참조하는 테이블의 기본 키 컬럼명 |
referencedColumnName | 외래 키가 참조하는 대상 테이블의 컬럼명 | 참조하는 테이블의 기본 키 컬럼명 |
foreignKey(DDL) |
외래 키 제약조건을 직접 지정할 수 있다. 이 속성은 테이블을 생성할 때만 사용한다. |
|
unique nullable insertable updatable columnDefinition table |
@Column의 속성과 같다. |
@ManyToOne
- 다대일 관계 매핑
속성 | 설명 | 기본값 |
---|---|---|
optional | false로 설정하면 연관된 엔티티가 항상 있어야 한다. | true |
fetch | 글로벌 페치 전략을 설정한다. |
@ManyToOne=FetchType.EAGER @OneToMany=FetchType.LAZY |
cascade | 속성 전이 기능을 사용한다. | |
targetEntity | 연관된 엔티티의 타입 정보를 설정한다. 이 기능은 거의 사용하지 않는다. 컬렉션을 사용해도 제네릭으로 타입 정보를 알 수 있다. |
@OneToMany
- 다대일 관계 매핑
속성 | 설명 | 기본값 |
---|---|---|
mappedBy | 연관관계의 주인 필드를 선택한다. | |
fetch | 글로벌 페치 전략을 설정한다. |
@ManyToOne=FetchType.EAGER @OneToMany=FetchType.LAZY |
cascade | 속성 전이 기능을 사용한다. | |
targetEntity | 연관된 엔티티의 타입 정보를 설정한다. 이 기능은 거의 사용하지 않는다. 컬렉션을 사용해도 제네릭으로 타입 정보를 알 수 있다. |
FetchType의 LAZY와 EAGER
- LAZY
- 지연로딩
- 연관관계가 설정된 테이블에 대해 select를 하지 않는다.
- 1:N 과 같이 여러가지 데이터가 로딩이 일어날 경우 사용하는 방식
- EAGER
- 즉시로딩
- 연관관계가 설정된 모든 테이블에 대해 조인이 이루어진다.
- 1:1 연관관계와 같이 한 건만 존재할 때 사용하는 방식