SSAFY11th-book-study / book-study

0 stars 0 forks source link

[5.1] enum 클래스 db 저장시 #45

Open limjongheok opened 4 months ago

limjongheok commented 4 months ago
public enum Level {

    Bronze("br",0),
    Silver("sil",1);

    private final String s;
    private final int v;
    Level(String s, int a) {
        this.s = s;
        this.v = a;
    }
}

jpa 에서 다음과 같이 enum 클래스를 db에 저장시 image 또한 @Enumerated(value = EnumType.STRING) 다음을 사용시 image 다음과 같이 정한 이름으로 저장되는것을 볼수 있다. 이처럼 jpa는 자동으로 enum을 매핑해서 저장하는데 그렇다면 수동으로 매핑하여 enum 을 사용시 어떤 방식으로 저장해야하나요??

gmelon commented 4 months ago

사용자가 정의하는 Enum 클래스는 모두 Enum 이라는 추상 클래스를 묵시적으로 상속받게 되는데, 해당 클래스의 속성 중 ordinal 이라는 필드가 있습니다.

image

해당 필드는 enum에 값이 선언된 순서대로 index를 부여해주므로 수동으로 index를 넣어주고자 한다면 이 필드를 사용하면 될 것 같습니다. 다만 정수 값을 db에 넣어도 괜찮은가..? 에 대해서는 여기에서 논의해보아요.