JPA의 데이터 타입 분류
- 엔티티 타입
- @Entity로 관리하는 객체
- 데이터가 변경되어도 식별자를 통해 추적가능
- 값 타입
- int, Integer, String과 같이 값으로 사용하는 자바의 기본타입 및 객체
- 식별자가 없으므로 변경 시 추적 불가능
값 타입
- 기본 값 타입
- 자바 primitive Type, Refer class를 포함
- 임베디드 타입
- 컬렉션 타입
기본 값 타입
- 기본 값타입은 생명주기가 엔티티에 의존한다. 즉, 회원을 삭제하면 이름 및 나이가 삭제된다는 뜻이다.
- 값 타입은 공유하지 않는다. 회원 이름이 변경된다고 하여, 다른 엔티티의 이름이 변경되어선 안된다.
- 예 ) String name, int age, Long id ...
- 참고 ] 자바에서 Primitive Type은 상수풀을 참조하므로 절대 공유되지 않는다.
임베디드 타입 (엔티티 의존)
- 새로운 값 타입을 지정할 수 있는 데이터
- 기본 타입을 모아서 만들기 때문에 복합값 타입이라고 부르기도 함(하이버네이트)
- int, String과 같이 값타입에 해당된다. 추적 불가능
- 근무 시작일, 근무 종료일 → 날짜 공통
- 주소, 번지, 우편번호 → 주소 공통