값 타입
- 기본값 타입
- Primitive Type
- Reference Type
- 임베디드 타입
- 컬렉션 값 타입
임베디드 타입
- 재사용할 수 있고 응집도를 높일 수 있다.
- 의미 있는 메소드를 만들 수 있다.
@Embeddedable
: 값 타입을 정의하는 곳에 표시
@Embedded
: 값 타입을 사용하는 곳에 표시
@AttributeOverride
를 활용하여 속성을 재정의할 수 있다.
- ex)
Address
클래스가 기존 Entity에서 사용하고 있더 하나 더 필요하다면?
- 임베디드 타입이 null이면 매핑 컬럼 값도 모두 null이 된다.
값 타입과 불변 객체
- 임베디트 타입 같은 값 타입을 여러 엔티티에서 공유해서 사용하면 안된다.
clone()
활용
- setter같은 수정자 메소드 제거
- 불변 객체로 만들기
값 타입 비교
equals()
와 hashCode()
를 재정의
값 타입 컬랙션
@ElementCollection
, @CollectionTable
- (cascade + orphan remove) 기능이 필수로 가진다.
- 기본 Fetch는 Lazy이다.
- 별도의 테이블로 구성되긴 하나, 식별자 개념이 없기 때문에 원본 데이터를 찾기 어렵다.