일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 네이버로그인API
- SpringBoot
- 멱등활용
- 김영한JPA
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- JPA
- Transaction not successfully started
- 자바ORM표준프로그래밍
- @Table
- DB방언
- @Entity
- HTTPMESSAGE
- Invalid bound statement (not found)
- 매핑정보가없는필드
- hibernate.dialect
- gitrevert
- KAKAOLOGINAPI
- http
- initialDelay
- RFC723x
- anyMatch
- 무상태프로토콜
- gitreset
- Git
- 네이버 연결된 서비스
- 데이터베이스 방언
- 캐쉬가능
- HTTP3
- org.apache.ibatis.binding.BindingException
- fixedDelay
- Today
- Total
twocowsong
@Enumerated 본문
깃허브 정리 URL : https://github.com/sWineTake/jpa.git
GitHub - sWineTake/jpa: 자바 ORM 표준 JPA 프로그래밍 - 김영한
자바 ORM 표준 JPA 프로그래밍 - 김영한. Contribute to sWineTake/jpa development by creating an account on GitHub.
github.com
자바의 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 |