엔티티 타입
@Entity로 정의하는 객체
데이터가 변해도 시결자로 지속해서 추적 가능
식별자 있음/생명주기관리/ 공유
값타입
단순히 값으로 사용하는 자바 기본타입이나 객체
식별자가 없고 값만 있으므로 변경시 추적 불가 - 임베디드 타입 값타입을 여러 엔티티에서 공유하면 위험. 대신 값을 복사해서 사용.
값 타입은 불변 객체로 설계하는 것을 추천
생명주기를 엔티티의 의존
값 타입은 공유하면 안됨
값 타입 컬렉션에 변경 사항이 발생하면, 주인 엔티티와 연관된 모든 데이터를 삭제하고, 값 타입 컬렉션에있는 현재 값을 모두 다시 저장한다. 값 타입 컬렉션을 매핑하는 테이블은 몯느 컬럼을 묶어서 기본 키를 구성해야 함.
기본값 타입
- 자바 기본 타입(int, double)
- 래퍼 클래스(Integer, Long)
- String
임베디드 타입(embedded type, 복합 값 타입)
엔티티의 값일뿐이고, 전과 후에 매핑하는 테이블은 같다.
객체와 테이블을 아주 세밀하게 매핑하는 것이 가능
@Embeddable : 값 타입을 정의하는곳
@Embedded : 값 타입을 사용하는곳
한 엔티티에서 같은 값타입을 사용할 경우
@AttributeOverride/@AttributeOverrides : 속성 재정의
컬렉션 값 타입(collection value type)
단순할 때 사용 추천
값 타입을 하나 이상 저장할 때 사용
컬렉션을 저장하기 위한 별도의 테이블이 필요
지연로딩
@OneToMany에 casecade도 적용한거라 볼 수 있음
@ElementCollection @CollectionTable(name="테이블명", joinColums=@JoinColumn(name="조인컬럼"))
'정리 > DB' 카테고리의 다른 글
MyBatis FETCH SIZE에 대해 (0) | 2022.08.17 |
---|---|
JPA (2) - 기능 정리 (0) | 2022.04.11 |
JPA (1) - JPA? ORM? (0) | 2022.03.16 |
댓글