값 타입
2022. 2. 2. 16:37
반응형
JPA의 데이터 타입 분류
- 엔티티 타입
- @Entity로 정의하는 객체
- 데이터가 변해도 식별자로 지속해서 추적 가능하다.
- 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식이 가능하다.
- 값 타입
- int Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체
- 식별자가 없고 값만 있으므로 변경시 추적이 불가능하다.
값 타입 분류
- 기본값 타입
- 자바 기본 타입(int, double)
- 래퍼 클래스(Integer, Long)
- String
- 임베디드 타입(embedded type, 복합 값 타입)
- 컬렉션 값 타입(collection value type)
기본값 타입
- String name, int age
- 생명주기를 엔티티에 의존한다.
- 회원을 삭제하면 이름, 나이 필드도 함께 삭제된다.
- 값 타입은 공유하면 안된다.
- 회원 이름 변경시 다른 회원의 이름도 함께 변경되면 안된다.
- 기본값 타입은 항상 값을 복사하기 때문이다.
임베디드 타입
- 새로운 값 타입을 직접 정의할 수 있다.
- 주로 기본 값 타입을 모아서 만들기 때문에 복합 값 타입이라고 한다.
- int, String 과 같은 값 타입 이다.
값 타입 공유 참조
- 임베디드 타입 같은 값 타입을 여러 엔티티에서 공유하면 위험하다. -> 부작용이 발생한다.
- 같은 값 타입을 공유하고 값이 변경되면 두개의 엔티티에서 동일하게 값 타입이 변경되기 때문에 부작용 발생!
- 따라서 값을 복사해서 사용해야한다.
불변 객체
- 객체 타입을 수정할 수 없게 만들면 부작용을 원천 차단할 수 있다.
- 값 타입은 불변 객체로 설계해야 한다.
- 불변 객체란 생성 시점 이후에 절대 값을 변경할 수 없는 객체를 의미한다.
반응형
'JPA' 카테고리의 다른 글
JPA 영속성 컨텍스트 - 1차캐시와 변경감지 (0) | 2022.05.31 |
---|---|
연관관계 매핑 종류 (0) | 2022.05.21 |
프록시와 연관관계 관리 (0) | 2022.02.02 |
상속관계 매핑과 @MappedSuperclass (0) | 2022.01.31 |
연관관계 매핑 (0) | 2022.01.25 |