@ManyToOne
다대일 관계를 나타내는데 사용한다.
속성 | 기능 | 기본값 | |
optional | false로 설정하면 연관된 엔티티가 항상 있어야 한다. | true | |
fetch | 글로벌 페치 전략을 설정한다. | FetchType.EAGER | |
cascade | 영속성 전이 기능을 사용한다. | ||
targeEntity | 연관된 엔티티의 타입 정보를 설정한다. 제네릭으로 타입 정보를 알 수 있다면 생략해도 된다. |
FetchType.EAGER 전략
단건 조회시 join 하지만 다건 조회시 N+1 이 발생한다.
BatchSize를 조절하거나 JPGL에 fetch join을 사용하자
@JoinColumn
외래 키를 매핑할 때 사용한다.
다대일 관계에서는 생략하여도 조인테이블 전략을 사용하지 않는다.
속성 | 기능 | 기본값 | |
name | 매핑할 외래 키 컬럼 이름 | 필드명_참조하는 테이블의 컬럼명 | |
referencedColumnName | 외래 키가 참조하는 대상 테이블의 컬럼명 name 속성과 값이 같으면 생략할 수 있다. |
참조하는 테이블의 컬럼명 | |
foreignKey(DDL) | 외래 키 제약조건을 직접 지정할 수 있다. 테이블 생성할 때만 사용한다. |
||
unique nullable insertable updateable columnDefinition table |
@Column의 속성과 같다 |
@Entity
public class Team {
@Id
@Column(name = "TEAM_ID")
private String id;
private String name;
}
@Entity
public class Member {
@Id
@Column(name = "MEMBER_ID")
private String id;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
}
728x90
'JVM > JPA' 카테고리의 다른 글
@OneToOne (0) | 2023.06.16 |
---|---|
@OneToMany (0) | 2023.06.12 |
@Access (0) | 2023.06.11 |
@Transient (0) | 2023.06.11 |
@Lob (0) | 2023.06.11 |