오늘은 스프링 공부하면서
알아본 enum타입에 대해서 알아보자
enum은 String, int와 같은 타입 종류중 하나이다.
public enum RoleType {
USER, ADMIN
}
이런식으로 사용이 가능하다.
위에껀 뭘 의미하냐면
만약
@Enumerated(EnumType.STRING)
private RoleType role;
위와 같은 코드가 있을 때
role안에는 RoleType 속 USER 와 ADMIN만 들어갈 수 있다는 것을 의미한다.
예를 들어 타입이 RoleType(내가만든것)이 아닌
String 이라고 쳐보자
우린 사용자의 롤타입을 무조건 유저 아니면 어드민으로만 하고싶은데
어떤 사람이 실수로 USER를 잘못쳐서 UESR 라고 칠수도있고
대문자 USER를 user라고 칠 수도 있다
(더 쉬운 예시를 들자면 db에 '남' ,'여' 성을 입력받도록 했는데
어떤 개발자가 '남자'라고 데이터를 넣을 수도 있다)
이걸 방지하고자 enum 이라는 타입을 만들게 되었는데
이것을 사용하면
무조건 그 속에 있는 값만 넣을수 있다
(여기서는 맨위 자바코드보면 USER, ADMIN 만 되겠죠?)
그리고 스프링에서 사용할땐 필드에
@Enumerated(EnumType.STRING)
와 같은 어노테이션을 사용하곤 하는데
이는 enum이라는 타입은 DB에서는 없으므로
내가 만든 enum값이 int인지 String인지 등등
알려주는 용도로 사용한다.
(여기서는 String으로 사용 => EnumType.STRING )
그리고 setter나 다른 곳에서 사용할 때는
user.setRole(RoleType.USER);
이런식으로 사용하면 된다.
내가만든enum클래스명.enum안의값
그러므로 여기서는 RoleType.USER가 되는것이다.
생각보다는 복잡하지만
고수들은 또 실수를 줄이기 위해서
위와 같이 enum타입을 잘 사용하나보다
그래도 개념만 이해하는건 생각보다 쉬우니 잘 기억해두자
댓글 영역