상세 컨텐츠

본문 제목

자바에서 타입 강제하기(ENUM, enum 사용법) @Enumerated(EnumType.STRING)

카테고리 없음

by shika 2022. 4. 28. 18:21

본문

오늘은 스프링 공부하면서

알아본 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타입을 잘 사용하나보다

 

그래도 개념만 이해하는건 생각보다 쉬우니 잘 기억해두자

 

댓글 영역