@Enumerated 타입은 Java의 Enum타입을 매핑할 때 사용한다
@Enumerated 애너테이션의 옵션은 아래와 같이 존재한다
- EnumType.ORDINAL - enum 순서를 DB에 저장
- EnumType.STRING - enum 이름을 DB에 저장
사용 예는 아래와 같다
public enum ProductType{
FOOD,
BOOK
}
@Entity
public class Product{
@Id
private productId;
@Enumerated(EnumType.STRING)
private ProductType productType
}
@Enumerated 애너테이션의 옵션은 EnumType.STRING을 사용하는 게 좋다
왜냐면 어떠한 이유로 enum의 순서를 바꿀 경우,
DB데이터가 꼬여버리기 때문이다
위 예제의 경우 FOOD라는 enum의 순서가 '1'이었는데
아래 예제와 같이 될 경우 순서가 '2'가 되어 DB에 저장했던 값과 전혀 다른 값을 가지게 될 수 있다
public enum ProductType{
BOOK,
FOOD
}
@Entity
public class Product{
@Id
private productId;
@Enumerated(EnumType.STRING)
private ProductType productType
}
Enum타입으로 저장할 때는 EnumType.STRING을 사용하자!
'Spring > JPA' 카테고리의 다른 글
Entity-Table 매핑 - 필드 매핑(@Lob) (0) | 2023.02.23 |
---|---|
Entity-Table 매핑 - 필드 매핑(@Temporal) (0) | 2023.02.23 |
Entity-Table 매핑 - 필드 매핑(@Column) (0) | 2023.02.23 |
스키마 자동생성 옵션 (0) | 2023.02.14 |
Entity-Table 매핑 - Entity와 테이블 매핑방법 (0) | 2023.02.12 |
댓글