[JPA] Enum 타입

DevHwan·2022년 11월 30일
0

회원의 탈퇴 여부 혹은 배송 여부 같이 값이 유동적이지 않고 몇 가지로 구분되는 명확한 값이 있다. 이것들을 String 이나 Boolean 타입으로 관리하는 것보다는 정해진 몇 가지의 값을 가지게 하는 Enum타입으로 관리하는 것이 매우 효율적일 것이다.

이를 어떻게 JPA에서는 구현할 수 있을까? 다음과 같다.

배송 상태를 구분짓는 Enum을 만들어보자.

public enum DeliveryStatus {
    READY,
    COMP
}

누군가는 배송이 READY, COMPLETE로 나눌것이면 굳이 Enum으로 하는 것보다는 Boolean으로 하는 것이 데이터나 메모리 차원에서 좋은 게 아닌 가 싶을 것이다. 그렇지만 배송 상태의 경우 진행 중, 알 수 없음 등 다양한 상태가 추가될 수 있다. 즉 Boolean보다는 확장성 측면에서 Enum 타입이 압도적으로 유리하다.

/**
 * ready or comp
 */
@Enumerated(EnumType.STRING)
private DeliveryStatus status;




이를 사용하는 엔티티에서는 다음과 같이 사용할 수 있다. EnumType으로는 Ordinary처럼 1,2,3 과 같은 형태로 데이터베이스에 저장할 수 있지만 나중에 상태가 추가되었을 때 문제가 생길 수 있기 때문에 String 타입으로 저장하는 것이 좋을 수 있다.

profile
달리기 시작한 치타

0개의 댓글