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로 저장된다는 차이가 있습니다.
위 예시를 저장되는 값으로 표시하여 표로 만들면 다음과 같습니다.
ORDINAL | STRING |
---|---|
1 | "normal" |
2 | "weapon" |
3 | "defense" |
4 | "add" |
5 | "special" |
6 | "normalEnforce" |
7 | "weaponEnforce" |
... | ... |
무조건 STRING으로 저장하라는 것은 아니지만 주로 String으로 사용될때가 많기 때문에 참고하여 글을 적게 되었습니다. 자신의 재량에 맞춰 사용하시면 될 것 같습니다.