[JPA] @Enumerated

목포·2021년 9월 16일
0

JPA

목록 보기
1/1

@Enumerated

Spring Batch 예제를 짜다가 발견한 @Enumerated 어노테이션에 대해 기술하려한다.

Enum

먼저 영화 등급을 나타내는 Rating Enum이 다음과 같이 있다고 해보자.

Rating.java

public enum Rating {
    UNRATED,
    G,
    PG,
    PG13,
    R,
    NC17
}

Movie.java

다음은 영화 domain을 정의한다. documentation 에서는 getter, setter 다 정의해줬지만 귀찮으니 lombok으로 간단히 작성한 것처럼 하겠다.
아래 코드 처럼 @Enumerated 어노테이션은 엔티티 클래스 속성 중 Enum 타입의 변수에 사용할 수 있다.

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Movie {

    @Id
    @GeneratedValue
    private int id;
    
    @Column
    private String director;
    
    @Column
    private String title;
    
    @Column
    private int year;

    @Enumerated(EnumType.STRING)
    private Rating rating;
}

EnumType.STRING vs EnumType.ORDINAL

EnumType에는 총 두 가지 타입이 있다.

  • EnumType.STRING : 각 Enum 이름을 컬럼에 저장한다. ex) G, PG, PG13..

  • EnumType.ORDINAL : 각 Enum에 대응되는 순서를 칼럼에 저장한다. ex) 0, 1, 2..

참고문서 - JPA and Enums via @Enumerated - Apache TomEE

profile
mokpo devlog

0개의 댓글