[Spring] Enum

jin·2022년 12월 30일
0

Spring Boot

목록 보기
3/8

Enum

자바 Enum타입을 엔티티 클래스의 속성으로 사용할 수 있다.

  • EnumType.ORDINAL : enum 순서 값을 DB에 저장
  • EnumType.STRING : enum 이름을 DB에 저장

예시)

public enum UserRole {
    USER, ADMIN
}
  • EnumType.ORDINAL 설정
@Enumerated(EnumType.ORDINAL)
private UserRole role;
  • 선언된 순서대로 Integer값으로 변환하여 저장된다. USER는 0으로, ADMIN은 1로 저장이 된다.
  • USER (일반회원), SILVER_USER (우수회원), ADMIN (관리자)와 같이 중간에 값이 추가되거나 없어진다면 값을 예측할 수 없으므로 사용하지 않는 것이 좋다.
  • EnumType.STRING 설정
@Enumerated(EnumType.STING)
private UserRole role;
  • "USER", "ADMIN" 문자열 자체가 저장된다.
  • 저장된 Enum의 순서가 바뀌거나, 추가되어도 안전하다.
  • 문자열 자체가 저장되기 때문에 ORDINAL에 비해 데이터 크기가 크다

💡 JPA2.1 부터 도입된 @Converter를 사용하는 것을 추천한다고 하는데 ENUM의 길이가 길지 않고, 최근 DB의 성능도 좋아져 @Converter를 사용해 최적화해도 크게 많은 이점을 얻지는 못한다고 한다.

profile
jin

0개의 댓글