Spring/jpa

[JPA] 고급 매핑 관련 어노테이션

라임온조 2023. 2. 16. 09:41

상속 관련

1. @Inheritance

1) 개념

상속 해 줄 부모 클래스에게 적용하는 어노테이션

2) 속성

strategy

  • InheritanceType.JOINED
    • 조인 전략: 자식 각각을 모두 테이블로 만들고 조회할 때 조인 사용
  • InheritanceType.SINGLE_TABLE
    • 단일 테이블 전략: 테이블을 하나만 사용해서 통합
  • InheritanceType.TABLE_PER_CLASS
    • 구현 클래스마다 테이블 전략: 서브 타입마다 하나의 테이블을 만든다

 

2. @DiscriminatorColumn

1) 개념

부모 클래스에 구분 컬럼 지정. 이 컬럼으로 자식 구분.

2) 속성

name

구분 컬럼의 이름

 

3. @DiscriminatorValue

1) 개념

엔티티를 저장할 때 구분 컬럼에 입력할 값을 지정

 

4. @MappedSuperClass

1) 개념

테이블과 매핑하지 않고 부모 클래스를 상속받는 자식 클래스에게 매핑 정보만 제공

테이블과는 관계가 없고 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모아주는 역할을 한다

 

5. @AttributeOverride

1) 개념

부모에게 물려받은 매핑 정보 재정의

 

6. @AttributeOverrides

1) 개념

부모에게 물려받은 매핑 정보 재정의(2개 이상)

 

7. @AssociationOverride

1) 개념

부모에게 물려받은 연관관계 재정의

 

복합 키 관련

1. @IdClass

1) 개념

복합 키를 가진 엔티티에서 복합 키를 등록할 때 사용

2) 특징

어노테이션을 쓰고 괄호 안에 복합 키를 정의해 놓은 클래스를 등록

 

2. @EmbeddedId

1) 개념

복합 키를 가진 엔티티에서 복합 키를 등록할 때 사용

 

3. @Embeddable

1) 개념

복합 키 식별자 클래스에 사용

 

4. @MapsId

1) 개념

외래 키와 매핑한 연관관계를 기본 키에도 매핑하겠다는 것을 나타내는 어노테이션

2) 속성

@EmbeddedId를 사용한 식별자 클래스의 기본 키 필드 지정