본문 바로가기
공부/메모

JPA의 @Enumerated을 알아보자 - 2

by 고구밍 2022. 4. 16.

https://velog.io/@yundleyundle/JPA-%EB%A7%A4%ED%95%91-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EC%9D%B4-%EB%AD%94%EB%8D%B0#-enumerated

 

[JPA] 매핑 어노테이션이 뭔데??

Spring 을 사용하기만해도 어노테이션이 많은데 JPA를 쓰기 위해서는 어떤 어노테이션이 필요할까??Entity Class를 생성하면서 가장 많이 사용하고 또한 필수로 알아야 하는 어노테이션 부터 알아보

velog.io

 

@Enumerated

@Enumerated는 자바의 enum Type을 매핑하기 위해 사용한다.
속성으로는 value 속성을 가지고 있는데 순서를 저장할 것인지, String으로 이름을 저장할 것인지 설정할때 사용한다.
value : EnumType.ORDINAL, EnumType.STRING, 2가지를 지원하며 default는 ORDINAL이다.

enum Permission {
	BRONZE, SILVER, GOLD
}

@Enumerated(value=EnumType.String)
private Permission permission;

위와 같이 사용할 수 있다.

💡 EnumType.ORDINAL

ORDINAL은 enum에 정의된 순서대로 숫자를 적용합니다. (0부터 시작)
ORDINAL을 사용하였을때는 숫자로 저장되기 때문에 저장되는 데이터의 크기가 작지만 Enum class의 중간에 타입이 추가되게 된다면 순서가 변경되어 데이터가 꼬일수 있기 때문에 권장하지 않습니다.

💡 EnumType.STRING

STRING 은 말 그대로 enum class의 Type을 문자열로 데이터베이스에 저장합니다. ORDINAL에 비해 중간에 순서가 변경되거나 추가되도 안전합니다. 하지만 ORDINAL과 반대로 데이터베이스에 저장할때 데이터의크기가 큽니다.
그래도 EnumType.STRING을 사용하는것을 권장합니다!

'공부 > 메모' 카테고리의 다른 글

예외 처리를 알아보자 - 1  (0) 2022.04.20
Spring Jpa의 사실과 오해  (0) 2022.04.17
JPA 지연 로딩과 즉시 로딩  (0) 2022.04.16
JPA의 @Enumerated를 알아보자 - 1  (0) 2022.04.16
[cs공부] 미들웨어(Middleware) - 2  (0) 2022.04.15