공부일기/JPA

JPA 공부일기(11)

고다나 2023. 3. 20. 23:53
[자바 ORM 표준 JPA 프로그래밍 - 기본편]
섹션 9.값타입- 기본값 타입 ~ 임베디드 타입

 

엔티티 타입: @Entity로 정의하는 객체. 데이터가 변해도 식별자로 지속해서 추적 가능.

값 타입: 단순히 값으로 사용하는 자바 기본타입이나 객체. 식별자가 없고 값만 있어 변경시 추적 불가.  종류 - 기본값 타입, 임베디드 타입, 컬렉션 값 타입

 

기본값 타입

- ex) String name, int age

- 생명주기를 엔티티에 의존.

- 값 타입은 공유하면 x. (참고: 자바에서 int, double과 같은 primitive type은 공유x, 값을 복사. Interger 같은 래퍼 클래스나 String같은 특수 클래스는 공유o, 값 변경x.)

 

임베디드 타입

- 새로운 값 타입을 직접 정의. (ex. String city, String street -> Address 객체로 묶어서 관리)

- 주로 기본값 타입을 모아서 만들어 복합값 타입이라고도 함.

- 값 타입을 정의하는 곳에 @Embeddable, 값 타입을 사용하는 곳에 @Embedded 표시. 기본 생성자 필수!

- 장점: 재사용, 높은 응집도.

- 임베디드 타입을 사용하기 전과 후에 매핑하는 테이블은 같음.

- 한 엔티티에서 같은 값 타입을 사용하면 컬럼 명이 중복되므로 @AttributeOverrides, @AttributeOverride를 사용해서
컬러 명 속성을 재정의.