- JPA의 데이터 타입을 가장 크게 분류하면 엔티티 타입과 값 타입으로 나눌 수 있다.
- 엔티티 타입은
@Entity
로 정의하는 객체이고,
값 타입은 int, Integer, String
과 같은 단순히 값으로 사용하는 기본 타입이나 객체이다.
- 이번 장에서는 값 타입에 대해서 알아볼 것이다.
- 값 타입은 3가지로 나뉜다.
- 기본값 타입
- 자바 기본 타입 (int, double 등)
- 래퍼 클래스 (Integer Double 등)
- String
- 임베디드 타입 (복합 값 타입)
- 컬렉션 값 타입
- 위 내용들을 하나씩 알아보자.
기본 값 타입
@Entity
public class Member {
@Id @GeneratedValue
private Long id;
private String name;
private int age;
}
- String, int와 같은 요소들이 값 타입이다.
- 기본 값 타입의 항목들(name, age)은 id라는 식별자에 의해 구분되며,
회원 인스턴스를 제거 시 같이 사라지게 된다.
- 값 타입의 요소들을 공유할 시 잘못된 변경이 일어날 수 있기에. 공유해서는 안된다.
임베디드 타입(복합 값 타입)
- JPA에서는 새로운 값 타입을 정의해서 사용하는 것을 임베디드 타입이라고 부른다.
- 중요한 것은 직접 정의한 임베디드 타입도 값 타입이라는 것이다.
@Entity
public class Member{
@Id @GeneratedValue
private Long Id;
private String name;
@Temporal(TemporalType.DATE) java.util.Date startDate;
@Temporal(TemporalType.DATE) java.util.Date endDate;
private String city;
private String street;
private String zipcode;
}