Enum의 역할 ⇒ 데이터 도메인
1. Enum의 정의
- Enumeration의 약자로, 특정 값의 집합을 나타내는 데이터 타입이다.
- 서로 관련있는 상수들의 집합을 정의할 때 사용하는 (불변)자료형이다.
2. Enum을 사용하는 이유
- 가독성
- 숫자나 문자열보다 의미를 명확하게 전달할 수 있다.
- 타입의 안전성
- 허용된 값 외에는 사용할 수 없게 제한할 수 있다.
- 유지보수성
- 상수를 한 곳에서 통합적으로 관리 가능하다.
3. Enum 사용 방법
✅ 기본 구조
public enum 클래스명 {
상수1, 상수2, ...
}✅ 테스트 코드
public enum ApplyEnum { // 열거형
PASS("합격"), FAIL("불합격");
public String value;
ApplyEnum(String value) { // enume도 이렇게 생성자를 만들 수 있다.
this.value = value;
}
}value ⇒ 데이터를 String 타입으로 DB에 저장하기 위함.* private로 value 타입을 선언하면 @Getter가 필요함. 굳이 그럴 필요 없이 public으로 접근할 수 있도록 하는 것이 번거롭지도 않고, 꺼내 쓸 때도 코드가 예쁨. 꼭 그렇게 할 필요는 없지만 선생님의 팁
@Getter
public class Apply {
private Integer id; // 지원번호
private String name; // 지원자명
private Integer comId; // 회사아이디
private String status;
public Apply(Integer id, String name, Integer comId, ApplyEnum status) {
this.id = id;
this.name = name;
this.comId = comId;
this.status = status.value;
}
}status는 String 타입이다.하지만 상태값을 매번 문자열로 받게되면 오타가 발생할 가능성이 있어 데이터가 꼬일 경우도 고려해야한다. 따라서 이를
클래스타입 으로 받는 것이 좋은데, 이때 enum을 사용할 수 있다.✅ enum 자체는 DB에 저장할 수 없는 타입이기때문에 String 필드 값으로 저장하며, 생성자에서는 클래스 타입으로 받는다. 이를 생성자 내부에서
.value 로 받아 String으로 넘긴다.public class ApplyTest {
@Test
public void create_test() {
System.out.println(ApplyEnum.PASS.value);
System.out.println(ApplyEnum.FAIL.value);
Apply apply = new Apply(1, "홍길동", 3, ApplyEnum.PASS);
System.out.println(apply.getStatus());
}
}클래스타입으로 꺼내쓰고 value값을 불러올 수 있다!
⇒ 한 번만 오타없이 잘 입력해놓으면 오타로인해 데이터 꼬일 일 없고, 깔끔한 코드로 만들 수 있다!
✅ 출력값

Share article