Spring Batch 예제를 짜다가 발견한 @Enumerated 어노테이션에 대해 기술하려한다.
먼저 영화 등급을 나타내는 Rating Enum이 다음과 같이 있다고 해보자.
public enum Rating {
UNRATED,
G,
PG,
PG13,
R,
NC17
}
다음은 영화 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에는 총 두 가지 타입이 있다.
EnumType.STRING : 각 Enum 이름을 컬럼에 저장한다. ex) G, PG, PG13..
EnumType.ORDINAL : 각 Enum에 대응되는 순서를 칼럼에 저장한다. ex) 0, 1, 2..