📌 1. Enumeration

📍 1-1. Enum

  • Enumeration Type(열거 타입) :
    데이터 중에서는 요일(월,화,수,목,금,토,일), 계절(봄,여름,가을,겨울) 등과 같이 몇 가지 한정된 값을 갖는 경우가 흔히 있다. 요일, 계절 등과 같이 한정된 데이터만을 가지는 타입을 Enumeration Type(열거 타입)이라고 한다.
  • Enumeration constant(열거 상수) :
    열거되는 값들을 Enumeration constant(열거 상수)라고 한다.
  • 네이밍 규칙
    • 타입 이름으로 첫 글자를 대문자로 하여 생성한다.
    • 열거상수는 대문자로 작성하는 것이 관례이다.
    • 만약 열거 상수가 2개의 단어로 연결되어 있을 때는 _로 연결한다.

📍 1-2. Enum 장점

  • 코드가 단순해지며 가독성이 좋아진다
  • 인스턴스 생성과 상속을 방지하여 상수값의 안정성이 보장된다.
  • enum 예약어를 사용하므로 열거의 의도를 분명히 한다.

📍 1-3. Enum과 메모리 구조

  • 열거 상수는 상수 각각을 내부적으로 public static final 필드이면서 객체로 제공되도록 한다.
    • static이 붙어 있기 때문에 각각의 상수는 클래스 변수이다.
    • 로드 시점에 클래스로더가 해당 클래스 변수들을 JVM 메서드 영역에 항상 상주시켜 프로그램이 종료되기 전에는 언제든지 가져다 쓸 수 있는 주소공간을 확보한다.

📍 1-4. Enum 파일 예시

  • 단순 열거 방식
    public enum Week {
    	MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; 
    }
    // 사용 방식
    		Week today = Week.FRIDAY;
    		System.out.println(today);
  • 이름과 값을 갖는 방식
    public enum Type {
    	// static final String WALKING = "워킹화"; 와 같음
    	WALKING("워킹화"),
    	RUNNING("런닝화"),
    	TRACKING("트래킹화"),
    	HIKING("등산화");
        // 생성자와 같은 역할
    	final private String name;
    	private Type(String name) {
    		this.name= name;
    	}
    	public String getName() {
    		return name;
    	}
    }
    // 사용 방식
    		for(Type type : Type.values()) {
    			System.out.println(type.getName());
    		}

📍 1-5. JPA 엔티티 컬럼과 Enum타입 매핑

  • @Enumerated(EnumType.타입) 을 사용한다.
    	// 주문상태(ORDER, CANCEL)
    	@Enumerated(EnumType.STRING)
    	private OrderStatus status; 
        // OrderStatus 클래스 내부
        public enum OrderStatus {
    		ORDER,CANCEL;
    	}

0개의 댓글