[JPA] EnumType 올바르게 사용하기

이멀젼씨

·

2021. 6. 19. 21:22

목적

@Enumerated을 사용하여 컬럼에 들어간 값을 확실히 식별하기 위함

목차

  1. @Enumerated와 기본값
  2. 올바르게 사용하기

1. @Enumerated와 기본값

Enumerated 애노테이션은 특정 필드가 열거형으로 저장되어야 할때 사용된다.

enum타입으로 선언된 필드 위에 사용한다.

하지만 그대로 사용했다가는 문제가 발생할 수 있다.

@Enumerated의 기본값은 ordinal로 설정되어있다.

ordinal은 enum에서 열거형의 순서를 나타낸다.

따라서 기본값이 ordinal로 설정되어있다는 말은 DB에 저장될 때 순서값 즉, 숫자로 저장된다는 것이다.

캐나다에 사는 kim과 서울에 사는 park객체를 만들고 DB에 저장하면

숫자로만 저장된다.

추후에 두번째 있던 CANADA가 마지막순서로 바뀌게 된다면 park은 졸지에 캐나다사람에서 일본사람으로 변경되는 것이다.

2. 올바르게 사용하기

올바르게 사용하기 위해선 @Enumerated의 파라미터로 EnumType.STRING을 주어야한다.

위와같이 선언하고 실제 값을 저장해보면

우리가 원한 대로 지역을 식별할 수 있는 문자열로 저장된 걸 알 수 있다.

'백엔드 > JPA' 카테고리의 다른 글

[JPA] @DataJpaTest 사용할 DB 변경  (0) 2021.09.16
[JPA] N+1 문제  (0) 2021.05.01