JPA/JPA

JPA 의 데이터 타입 분류

lovineff 2020. 6. 9. 10:30

엔티티 타입

@Entity로 정의하는 객체

데이터가 변해도 식별자로 추적 가능

 

값 타입

int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체

식별자가 없으므로 변경시 추적 불가

불변 객체로 만들어야 부작용을 피할수 있다.

값 타입은 공유하면 안됨

 

기본 타입(primitive type)

자바 기본 타입(int, double)

래퍼 클래스(Integer, Long)

String

생명주기를 엔티티에 의존

회원을 삭제하면 이름, 나이 필드도 함께 삭제

회원 이름 변경시 다른 회원의 이름도 함께 변경되면 안됨

기본 타입은 항상 '값'을 복사므로, 공유되지 않음

 

임베디드 타입(embedded type, 복합 값 타입)

새로운 값 타입을 직접 정의할 수 있음.

주로 기본 값 타입을 모아서 만든다.

재사용 가능

해당 값 타입만 사용하는 의미 있는 메소드를 만들 수 있음.

생명 주기는 엔티티에 의존한다.

 

 

컬렉션 값 타입(collection value type)

값 타입을 하나 이상 저장할때 사용

데이터베이스는 컬렉션을 같은 테이블에 저장할 수 없다.

컬렉션을 저장하기 위한 별도의 테이블이 필요함.

@ElementCollection
@CollectionTable(name = "ADDRESS", joinColumns = @JoinColumn(name = "MEMBER_ID"))
private List<Address> addressHistory = new ArrayList<>();

member.getAddressHistory().add(new Address("old city1","old street1","old zip code1"));

 

'JPA > JPA' 카테고리의 다른 글

변경 감지와 병합(merge)  (0) 2020.06.09
JPA에서 사용하는 다양한 API  (0) 2020.06.09
고아 객체  (0) 2020.06.09
영속성 전이(CASCADE)  (0) 2020.06.09
즉시 로딩과 지연 로딩  (0) 2020.06.09