본문 바로가기
Spring/JPA

Entity-Table 매핑 - 필드 매핑(@Enumerated)

by YellowCow 2023. 2. 23.

@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을 사용하자!

댓글