Enum

서회정's avatar
May 12, 2025
Enum

💡
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; } }
 
statusString 타입이다.
하지만 상태값을 매번 문자열로 받게되면 오타가 발생할 가능성이 있어 데이터가 꼬일 경우도 고려해야한다. 따라서 이를 클래스타입 으로 받는 것이 좋은데, 이때 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값을 불러올 수 있다!
⇒ 한 번만 오타없이 잘 입력해놓으면 오타로인해 데이터 꼬일 일 없고, 깔끔한 코드로 만들 수 있다!

 

✅ 출력값

notion image
 
Share article

clubnerdy