- 임베디드 타입
- 새로운 값 타입을 직접 정의할 수 있다
- JPA는 임베디드 타입(embedded type) 이라고 함
- 주로 기본 값 타입을 모아서 만들어서 복합 값 타입이라고 한다
- int , String 과 같은 값 타입
- JPA에서 임베디드 타입 사용범
- @Embeddable : 값 타입을 정의하는 곳에 표시
- @Embedded : 값 타입을 사용하는 곳에 표시
- 기본 생성자 필수
- @Embeddable 이나 @Embedded 둘 중 하나만 작성해도 기능은 되나, 둘다 넣는 것을 권장한다.
- 임베디드 타입의 장점
- 재사용
- 높은 응집도
- 객체지향적인 설계가 가능하다
- 값 타입 공유 참조
- 임베디드 타입 같은 값 타입을 여러 엔티티에서 공유하면 위험하다
- side effect(부작용)이 발생할 수 있다.
- application.yml
- 한 눈에 보기에도 가독성이 좋다
- 불필요한 코드의 반복을 피할 수 있다
- 계층 구조로 이해하기 쉽고 쓰기 편하다
- Enumeration
- 데이터 중에는 요일(월,화,수,목,금,토,일), 계절(봄,여름,가을,겨울) 등과 같이 몇 가지 한정된 값을 갖는 경우가 흔히 있다. 한정된 데이터만을 가지는 타입을 Enumeration Type 이라고 한다. 이것은 열거 타입이라고 한다. 그리고열거 타입에 들어가는 값을 열거 상수 라고한다.
- 연관된 상수들을 하나의 타입으로 지정할 수 있도록 하는 클래스
- 서로 관련있는 상수들을 모아서 하나의 자료형으로 선언함
- 열거형으로 선언된 순서에 따라 0부터 index값을 가지며, 1씩 증가한다
- enum 열거형으로 지정할 상수들은 전부 대문자로 선언
- 열거형 상수들은 선언한 뒤에 세미콜론(;)을 작성하지 않음 상수("문자열:") 등 상수와 다른 값을 연결하는 경우에는 ; 작성
- 다른 클래스와 마찬가지로 다른 파일, 클래스 안, 클래스 밖에 선언가능.
6-1. Enum과 메모리 구조
- java에서 열거 상수는 상수 각각을 내부적으로 public static final 필드이면서 객체로 제공되도록 한다.
- static이 붙어있기 때문에 각각의 상수는 클래스 변수로 클래스로더가 로드 시점에 JVM Method 영역에 해당 클래스 변수를 로드 - > 고정 메모리 영역
6-2. 열거 상수를 다른 값과 연결하기
- 열거 상수 각각이 열거 객체이므로 열거 객체에 생성자를 사용해서 다음과 같이 열거 상수에 다른 값을 할당할 수 있다.
- 상수("연결문자"), 상수(값)과 같은 형태로 작성
- 상수들은 열거한 끝에; 작성
- 해당 자료형에 맞는 private 생성자 필요
- 연결한 값을 반환해줄 getter 메서드 필요
- 로그 레벨
- trace, debug, info, warn, error