@Enumerated(EnumType.STRING)
은 JPA에서 열거형(Enum) 타입을 매핑할 때 사용하는 애너테이션입니다. 이 애너테이션을 사용하면 열거형 상수가 데이터베이스에 문자열 형태로 저장되고 조회됩니다.
예를 들어, 다음과 같은 열거형이 있다고 가정해보겠습니다.
public enum Gender {
MALE, FEMALE, UNKNOWN
}
이 열거형을 JPA에서 매핑하려면 @Enumerated(EnumType.STRING) 애너테이션을 사용하면 됩니다. 다음은 엔티티 클래스에서 이 애너테이션을 사용한 예시입니다.
@Entity
public class Person {
@Id
private Long id;
private String name;
@Enumerated(EnumType.STRING)
private Gender gender;
// getters and setters
}
위 예제에서 gender 필드는 @Enumerated(EnumType.STRING) 애너테이션을 사용하여 열거형 상수가 문자열 형태로 데이터베이스에 저장되도록 설정되었습니다. 이제 이 엔티티 객체를 데이터베이스에 저장하면, gender 필드의 값은 MALE, FEMALE, UNKNOWN 중 하나의 문자열로 저장됩니다.
예를 들어, 다음은 Person 엔티티 객체를 생성하고 저장하는 코드입니다.
Person person = new Person();
person.setId(1L);
person.setName("Alice");
person.setGender(Gender.FEMALE);
entityManager.persist(person);
위 코드를 실행하면, Person 객체가 데이터베이스에 저장될 때 Gender.FEMALE 상수는 "FEMALE"이라는 문자열로 저장됩니다.
이와 같이 @Enumerated(EnumType.STRING) 애너테이션을 사용하면 열거형 상수를 문자열 형태로 데이터베이스에 저장할 수 있습니다.
이 애너테이션을 사용하면 데이터베이스에 저장된 값을 조회할 때도 열거형 상수 대신 문자열을 사용할 수 있습니다.