Spring/jpa

[JPA] 연관관계 어노테이션

라임온조 2023. 2. 13. 16:22

1. @ManyToOne

1) 개념

다대일 관계에서 사용

2) 속성

optional

  • false로 설정하면 연관된 엔티티가 항상 있어야 한다
  • 기본값: true

fetch

  • 글로벌 페치 전략을 설정한다
  • 기본값: ManyToOne=FetchType.EAGER, OneToMany=FetchType.LAZY

cascade

  • 영속성 전이 기능을 사용한다

targetEntity

  • 연관된 엔티티의 타입 정보를 설정한다

 

2. @JoinColumn

1) 개념

외래 키를 매핑할 때 사용

2) 속성

name

  • 매핑할 외래 키 이름
  • 기본값: 필드명_참조하는 테이블의 기본 키 컬럼명

 

referencedColumnName

  • 외래 키가 참조하는 대상 테이블의 컬럼명
  • 기본값: 참조하는 테이블의 기본 키 컬럼명

 

foreignKey(DDL)

  • 외래 키 제약조건을 직접 지정할 수 있다.
  • 테이블을 생성할 때만 사용한다

3) 특징

생략 가능

 

3. @OneToMany

1) 개념

일대다 관계를 매핑할 때 사용

2) 속성

mappedBy

  • 연관관계의 주인의 필드 이름

4. @OneToOne

1) 개념

일대일 관계를 매핑할 때 사용

2) 속성

mappedBy

  • 연관관계의 주인의 필드 이름

5. @ManyToMany

1) 개념

다대다 관계를 매핑할 때 사용

 

6. @JoinTable

1) 개념

다대다 관계를 매핑할 때 필요한 연결테이블 관련 설정을 하기 위해 사용

2) 속성

name

  • 연결 테이블을 지정

joinColumns

  • 현재 방향인 엔티티와 매핑할 조인 컬럼 정보를 지정

inverseJoinColumns

  • 반대 방향인 엔티티와 매핑할 조인 컬럼 정보를 지정

7. @JoinColumns

1) 개념

매핑 시 여러 컬럼을 매핑해야 할 경우 사용

2) 특징

JoinColumns를 쓰고 괄호 안에 @JoinColumn을 컬럼 개수만큼 작성