728x90
출처: 자바 ORM 표준 JPA 프로그래밍
JPA의 데이터 타입은 2개이다.
엔티티 타입, 값 타입이 그 2개이다.
엔티티타입
-@Entity로 정의함
-값이 변경되면 식별자로 추적 가능
값 타입
- 값이 변경되어도 추적 불가능
- 그냥 자바 클래스, primitive 타입, wrapper class 등
- 생명주기를 엔티티에 의존함
값 타입 분류
- 기본 값 타입: 말그대로 기본으로 제공되는 값 타입
• 자바 기본 타입(int, double)
• 래퍼 클래스(Integer, Long)
• String
- 임베디드 값 타입: 사용자가 정의한 값 타입
- 컬렉션 값 타입: 값 타입의 컬렉션
값 타입 컬렉션
실무에서는 이것 대신 일대다 관계를 고려함
영속성 전이(Cascade) + 고아 객체 제거를 사용해서
값 타입 컬렉션 처럼 사용
값 타입 주의사항
공유 참조의 문제가 발생할 수 있다.
그래서 불변 객체로 만들어야 한다.
= Integer, String 처럼 setter를 만들지 않으면 된다.
값 타입은 정말 값 타입이라 생각할때만 사용하며, 엔티티와 혼동하면 안된다.
- 값을 지속적으로 추적, 변경해야 하면 엔티티
728x90
'Dev > JPA' 카테고리의 다른 글
API 설계시 DTO를 주고받아야 한다. 엔티티 말고 (0) | 2021.06.29 |
---|---|
[강의정리] N+1 문제와 JPQL fetch join을 통한 해결 (0) | 2021.05.21 |
[강의정리] 영속성 전이, 고아객체, 생명주기 (0) | 2021.05.18 |
[강의정리] 프록시와 연관관계 관리 (0) | 2021.05.18 |
[강의정리] 상속관계 매핑 (0) | 2021.05.18 |