[Spring] JPA enum 사용할때 주의할 점

PersesTitan·2022년 9월 5일
0

Spring

목록 보기
40/48

예제

public enum CrystalKind {
    normal, weapon, defense, add, special,
    normalEnforce, weaponEnforce, defenseEnforce,
    addEnforce, specialEnforce
}

jpa에서 enum을 사용하게 되면 다음과 같이 @Enumerated(EnumType.STRING)를 붙여주어야 하는데요. 아무것도 설정하지 않게되면 @Enumerated(EnumType.ORDINAL)로 설정되기 때문입니다.



무엇이 문제 일까?

@Enumerated(EnumType.ORDINAL)로 되어있다면 무엇이 문제 이길레 @Enumerated(EnumType.STRING)로 바꾸는 것일까요? 만약에 @Enumerated(EnumType.ORDINAL)로 설정하여 데이터베이스에 저장하게 되면 CrystalKind.normal를 값을 넣게 되면 데이터베이스에는 "normal"이 아닌 normal이 1번째인 데이터이기 때문에 1로 저장된다는 차이가 있습니다.

위 예시를 저장되는 값으로 표시하여 표로 만들면 다음과 같습니다.

ORDINALSTRING
1"normal"
2"weapon"
3"defense"
4"add"
5"special"
6"normalEnforce"
7"weaponEnforce"
......

무조건 STRING으로 저장하라는 것은 아니지만 주로 String으로 사용될때가 많기 때문에 참고하여 글을 적게 되었습니다. 자신의 재량에 맞춰 사용하시면 될 것 같습니다.

profile
안녕하세요 페르세스 티탄입니다! 부족한 부분이 많이 있겠지만 잘부탁드립니다.

0개의 댓글