일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- gitrevert
- anyMatch
- SpringBoot
- 캐쉬가능
- org.apache.ibatis.binding.BindingException
- fixedDelay
- JPA
- @Entity
- 네이버 연결된 서비스
- 김영한JPA
- HTTPMESSAGE
- 네이버로그인API
- RFC723x
- http
- Git
- KAKAOLOGINAPI
- initialDelay
- 데이터베이스 방언
- hibernate.dialect
- @Table
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- 매핑정보가없는필드
- Invalid bound statement (not found)
- 무상태프로토콜
- 자바ORM표준프로그래밍
- Transaction not successfully started
- 멱등활용
- HTTP3
- gitreset
- DB방언
Archives
- Today
- Total
twocowsong
@Enumerated 본문
깃허브 정리 URL : https://github.com/sWineTake/jpa.git
자바의 enum 타입을 매핑할때 사용합니다.
@Enumerated
enum 클래스는 다음과 같습니다.
public enum RoleType {
ADMIN, USER
}
Entity에서 enum을 매핑하면 아래와 같습니다.
@Column(name = "role_type")
@Enumerated(EnumType.STRING)
private RoleType roleType;
enum은 다음처럼 사용합니다.
Member member = new Member();
member.setRoleType(RoleType.ADMIN); // -> DB에 문자 ADMIN으로 저장됩니다.
@Enumerated.EnumType의 속성은 아래 2개가 있습니다.
@Enumerated(EnumType.STRING)
@Enumerated(EnumType.ORDINAL)
EnumType.ORDINAL은 enum에 정의된 순서대로 ADMIN은 0, USER은 1 값이 DB에 저장됩니다.
- 장점 : DB에 저장되는 데이터 크기가 작습니다.
- 단점 : 이미 저장된 enum의 순서를 변경 할 수 없습니다.
EnumType.STRING은 enum이름 그대로 ADMIN은 'ADMIN', USER은 'USER'라는 문자로 DB에 저장됩니다.
- 장점 : 저장된 enum의 순서가 바뀌거나 enum이 추가되어도 안전합니다.
- 단점 : DB에 저장되는 데이터 크기가 ORDINAL에 비해서 큽니다.
기본값인 EnumType.ORDINAL은 주의해서 사용해야 합니다.
ADMIN(0), USER(1) 사이에 enum이 하나 추가되서 ADMIN(0), NEW(1), USER(2)로 설정되면 이제부터 USER은 2로 저장되지만 기존에 DB에 저장된 값은 여전히 1로 남아있습니다.
따라서 이런 문제가 발생하지않는 EnumType.STRING을 권장합니다.
'IT > JPA' 카테고리의 다른 글
@Lob (0) | 2022.05.21 |
---|---|
@Temporal (0) | 2022.05.20 |
필드와 컬럼 매핑 : @Column (0) | 2022.05.18 |
기본 키 매핑 정리 (0) | 2022.05.16 |
AUTO 전략 (0) | 2022.05.16 |