값 타입
- 기본 값 타입
- 자바 기본 타입
- 래퍼 클래스
- String
- 임베디드 타입 (복합 값 타입)
- 컬렉션 값 타입
기본 값 타입
자바가 제공하는 기본 데이터 타입
기본 타입은 절대 공유되지 않으며, a=b로 선언 시 b의 값을 복사해서 a에 넣음
임베디드 타입 (복합 값 타입)
JPA에서 사용자가 직접 정의한 값 타입
임베디드 타입도 int, String처럼 값 타입임
하이버네이트는 임베디드 타입을 컴포넌트라 함
컬렉션 값 타입
하나 이상의 값 타입을 저장할 때 사용
값 타입 컬렉션은 영속성 전이 + 고아 객체 제거 기능을 필수로 가짐
엔티티 타입의 특징
- 식별자가 있음
- 엔티티 타입은 식별자가 있고 식별자로 구분할 수 있음
- 생명 주기가 있음
- 생성하고 영속화하고 소멸하는 생명 주기가 있음
- em.persist()로 영속화
- em.remove()로 제거
- 공유할 수 있음
- 참조 값을 공유할 수 있음 = 공유 참조
- 다른 엔티티에서 얼마든지 회원 엔티티를 참조할 수 있음
값 타입의 특징
- 식별자가 없음
- 생명 주기를 엔티티에 의존
- 스스로 생명주기를 가지지 않고 엔티티에 의존
- 의존하는 엔티티를 제거하면 같이 제거됨
- 공유하지 않는 것이 안전
- 엔티티 타입과는 다르게 공유하지 않는 것이 안전 -> 값을 복사해서 사용
- 오직 하나의 주인만이 관리
- 불변 객체로 만드는 것이 안전
'Backend > Spring Boot' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 13장 (0) | 2023.07.04 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 10장 (0) | 2023.05.30 |
[자바 ORM 표준 JPA 프로그래밍] 8장 (1) | 2023.05.23 |
[자바 ORM 표준 JPA 프로그래밍] 7장 (0) | 2023.05.23 |
[자바 ORM 표준 JPA 프로그래밍] 6장 (0) | 2023.05.02 |