SpringBoot Meteor

[SpirngBoot]JPA Entity에 Enum타입 적용해보기 (feat.@Enumerated)

DoubleMeteor 2021. 9. 27. 20:35

우선 들어가기에 앞서 Enum이 뭔지 간략하게 알고 넘어가자

Enum이란? 

자바 1.5버젼부터 새롭게 추가된 "Enum" 이노옴이 대체 무엇이길래 ? 이노옴

Enum이란 열거형이라고 불리며 , 서로 연관된 상수들의 집합을 의미한다.

 

Enum의 장점

Enum을 사용할 때 장점은 아래와 같다!

 

1. 코드가 단순해지며, 가독성이 좋아진다.

2. 인스턴스 생성과 상속을 방지하여 상수값의 타입안정성이 보장된다.

3. enum class를 사용해 새로운 상수들의 타입을 정의함으로써 정의한 타입이외의 타입을 가진 데이터값을 컴파일 시

   체크한다. =>타입안정성 보장 (데이터 무결성)

4. 키워드 enum을 사용함으로써 구현의 의도가 열거형임을 분명하게 알 수 있다

    (다른 주석의 설명이 필요없어짐 코드의 간결성도 확보!)

 

@Enumerated 애노테이션에는 두 가지 EnumType이 존재한다.

EnumType.ORDINAL : enum 순서 값을 DB에 저장 

EnumType.STRING :  enum 이름을 DB에 저장

 

예를 들어 enum이 다음과 같이 있을 때

enum ChangMo {

  METEOR,

  START;

}

 

ORDINAL로 지정하고 changmo 속성에 ChangMo.METEOR값을 셋팅하면 DB에 저장되는 값은 METEOR 순서값인

1이 저장이 된다.

STRING으로 지정하면 METEOR, START 문자열 자체가 저장이 된다.

 

그렇다면 어떻게 ENUM을 이용해 COLUMN에 저장하는지 테스트 해보자

이넘 클래스
Entity

위에 보이는 클래스가 Entity 클래스이다.

 

postman으로 요청을 보낸 후 DB에 어떻게 저장되며 어떤식으로 값을 응답받는지 확인해 보겠다

 

pathType에 enum에서 정의한 값을 보내주면 DB에 아래와 같이 컬럼값이 들어가는 것을 확인할 수 있다.

이렇게 DB에 저장한 후 Response값으로 DTO에 value값을 담아서 반환해주었다.

이렇게 되면 위의 ENUM클래스 이미지에 있던 PRODUCT의 벨류값인 "제품"을 DTO로 반환하게 된다.

 

블로그 글을 정리하며 @Enumerated에 관한 자료를 검색하는데 사용하는 방법이 훨씬 더 딥했던것 같았다

그것은 추후 업데이트 글로 올리는것으로 기약하며 오늘은 여기서 마무리해야겠다.