JPA
λ Enum Type
κΉμ§ DBλ‘ λ§€νμ λμμ€λλ€.
κ°λ¨ν Enum Type
μ λ§λ€μ΄λ³΄κ³ μ§μ 맀νκΉμ§ ν΄λ³Όκ»μ.
μ€μ΅μ μ¬μ©ν Entity
μ
λλ€.
νΈμλ₯Ό μν΄ setter
κΉμ§ λͺ¨λ μ΄μ΄μ£Όμμ΅λλ€.
@Getter @Setter
@Entity
public class Member {
@Id
private Long id;
@Column(name = "name")
private String username;
@Enumerated
private RoleType roleType;
}
μ°μ Entity
λ‘ Enumνμ
μ μ¬μ©νκ³ μΆλ€λ©΄ @Enumerated
μ΄λ
Έν
μ΄μ
μ λΆμ¬μ€μΌ ν©λλ€.
κ°λ¨νκ² μμ±ν Enumν΄λμ€ μ½λμ λλ€.
package com.dhk.domain;
public enum RoleType {
ADMIN, USER, GUEST
}
λ€ μμ±νμμΌλ μ΄μ DBμ μ§μ λ£μ΄λ³Όκ»μ.
Member member = new Member();
member.setId(1L);
member.setUsername("kim");
member.setRoleType(RoleType.ADMIN);
em.persist(member);
μ€ν μ DBμ Member ν μ΄λΈμ λΉμ΄μλ μνμ λλ€.
μ μμ μΌλ‘ insert
μΏΌλ¦¬κ° μνλμ΄ DBμ μνλ κ°μ΄ λ€μ΄κ°μ΅λλ€.
μ¬μ€ Enum Type
μ μ¬μ©νλλ° ν¬κ² μ΄λ €μμ μμ΅λλ€.
νμ§λ§ νλ μ£Όμν΄μΌ ν μ¬νμ΄ μμ΅λλ€.
μ μ€μ΅μ½λμμ Entity
ν΄λμ€λ₯Ό ꡬμ±ν λ Enum
νμ
μ μ§μ νλ μ΄λ
Έν
μ΄μ
μΈ @Enumerated
μ μλ¬΄λ° μ€μ μ ν΄μ£Όμ§ μμμ΅λλ€.
μ΄λ κ² μλ¬΄λ° μ€μ μ ν΄μ£Όμ§ μμμ λ @Enumerated
μ λν΄νΈ μ€μ κ°μ EnumType.ORDINAL
μ
λλ€.
ORDINAL
μ ENUM νμ
μ κ°μ μμλ‘ μ μ₯ν©λλ€.
μ€μ΅μ μ¬μ©ν ENUM ν΄λμ€λ₯Ό λ€μ 보μ€κ»μ.
package com.dhk.domain;
public enum RoleType {
ADMIN, USER, GUEST
}
EnumType.ORDINAL
μ μ¬μ©ν λ μ€μ enum typeμ κ°μ
ADMIN
= 0USER
= 1GUEST
= 2μ΄λ κΈ° λλ¬Έμ μ μμ μμ RoleType.ADMIN
μ μ μ₯νμ λ DBμ 0μ΄ μ μ₯λ κ² μ
λλ€.
μ΄λ° μν©μ κ°μ ν΄λ³Όκ»μ.
μꡬμ¬νμ΄ λ³κ²½λμ΄ RoleType
μ VIP
κ° 0λ²μ§Έμ μΆκ°λλ μν©μ
λλ€.
public enum RoleType {
VIP, ADMIN, USER, GUEST
}
μ΄λ κ² Enum ν΄λμ€λ₯Ό λ³κ²½νκ³ VIP
λ₯Ό RoleType
μΌλ‘ νλ Memberλ₯Ό μΆκ°μμΌλ³Όκ»μ.
DBμ ROLETYPE
μΉΌλΌμ κ°μ΄ μ€λ³΅λμμ΅λλ€.
μμλ‘ ENUMνμ
μ μ μ₯νλ©΄ μ΄μ κ°μ΄ λ³κ²½μ μ€λ₯μ κ°λ₯μ±μ΄ μκΉλλ€.
λλ¬Έμ λ°λμ ENUM νμ μ StringμΌλ‘ μ μ₯ν΄μ£Όμ΄μΌ ν©λλ€.
@Enumerated(EnumType.STRING)
private RoleType roleType;
μμ κ°μ΄ EnumType.STRING
μΌλ‘ μ€μ νκ³ μκΉ μ€λ₯κ° λ°μνλ μλ리μ€λ₯Ό λκ°μ΄ λ€μ μνν΄λ³Όκ»μ.
λ΄λΆμ μΌλ‘ EnumTypeμ μμλ λ°λμμ§λ§ λ¬Έμ μμ΅λλ€. μμ κ°μΈ μμλ₯Ό μ΄μ©νμ§ μκ³ STRING
μ μ΄μ©νμΌλκΉμ.
@Enumerated(EnumType.STRING)
κ°μ¬ν©λλ€. π