-> 클래스의 필드값 중 enum 타입인 것에 붙이는 애노테이션이다.
예시를 통해 이해해보자!
public class Club extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
private String name;
private String introduction;
@NotNull
@JdbcTypeCode(SqlTypes.VARCHAR)
@Enumerated(EnumType.STRING)
private ClubType clubType;
@NotNull
@JdbcTypeCode(SqlTypes.VARCHAR)
@Enumerated(EnumType.STRING)
private Hashtag hashtag;
...
}
public enum ClubType implements EnumMapperType {
CENTER("중앙동아리"),
SMALL("소모임"),
ETC("그 외");
private final String title;
...
}
만약 ClubType값에 소모임을 설정하고 싶다고 하자.
1️⃣ @Enumerated(EnumType.ORDINAL)
ORIGINAL로 설정하면, DB에 2로 저장된다.
ClubType에 SMALL이 2번째로 지정되어있기 때문이다.
2️⃣ @Enumerated(EnumType.STRING)
STRING으로 설정하면, DB에 SMALL로 저장된다.

-> DB를 확인해보면 SMALL로 저장된것을 확인할 수 있다.
기존에 2가 의미하던 값이 다른 의미를 가질 수 있다.
예를 들어
public enum ClubType implements EnumMapperType {
CENTER("중앙동아리"),
SMALL("소모임"),
ETC("그 외");
private final String title;
...
}
public enum ClubType implements EnumMapperType {
CENTER("중앙동아리"),
COLLABERATE("연합동아리"),
SMALL("소모임"),
ETC("그 외");
private final String title;
...
}
-> 이렇게 되면 DB에 저장된 2는 더이상 소모임이 아닌, 연합동아리를 의미하게된다.