개발/1일1문제해결
[Java] Enum 클래스 실무 활용기 1 (with JavaScript)
Gamii
2024. 12. 9. 18:48
728x90
Enum 클래스를 언제 사용해야하는지 예전에 고민이 많았었는데, 리팩토링을 하면서 활용할 곳들이 많이 보인다.
Enum 클래스를 활용하는 방법들을 하나씩 정리하려고 한다.
[게시판 CRUD]
게시판에서 CRUD 작업을 처리할 때 Enum을 활용할 수 있다.
1. CRUD 작업에 해당하는 값들인 CREATE, READ, UPDATE, DELETE를 Enum 클래스에 정의한다.
public enum ActionType {
CREATE("C"),
READ("R"),
UPDATE("U"),
DELETE("D");
private String value;
private ActionType(String value) {
this.value = value;
}
public String getCode() {
return value;
}
public static ActionType fromCode(String code) {
for (ActionType action : ActionType.values()) {
if (action.getCode().equals(code)) {
return action;
}
}
throw new IllegalArgumentException("No action found for code: " + code);
}
}
2. 웹에서 사용자가 선택한 값을 Enum에 정의된 값으로 보낸다.
(아래 예시는 Javascript로 작성)
function action(){
fetch('/mail/actionMail.do', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
"action" : "INSERT" // 여기에 Enum 타입을 적는다
}),
});
//생략
}
3. 서버에서는 해당 값이 MailDTO의 ActionType.INSERT와 같이 매핑되어 값이 들어온다.
import lombok.Data;
@Data
public class MailDTO {
private ActionType action;
}
@RequestMapping("actionMail.do")
public @ResponseBody ResponseBean actionMail(@RequestBody MailDTO MailDTO) {
...
// 1. Enum Class인 ActionType으로 받음
ActionType action = MailDTO.getAction();
// 2. Enum Class로 switch문 사용 가능
switch(action) {
case CREATE :
...
case READ :
...
case UPDATE :
...
case DELETE :
...
...
}
Enum으로 값을 관리하면 switch문에서 Enum 상수를 직접 사용할 수 있다.
이를 통해 코드의 가독성이 높아지고,
값이 변경되더라도 Enum에 정의된 값만 수정하면 되므로 유지보수가 용이해진다.
또한, Enum을 사용하면 값이 잘못 입력되는 실수를 방지할 수 있으며,
코드에서 상수의 의미를 명확히 전달할 수 있다.