본문 바로가기
Back-End/자바 ORM 표준 JPA 프로그래밍

[JPA] 자바 ORM 표준 JPA 프로그래밍_9장

by ChaSso 2023. 6. 27.

9장 값 타입

∘ JPA의 데이터 타입은 크게 엔티티 타입과 값 타입으로 분류됨.

  - 엔티티 타입은 엔티티 객체이고, 값 타입은 단순히 값을 나타내는 타입이나 객체

∘ 값 타입은 기본값 타입, 임베디드 타입, 컬렉션 값 타입으로 나뉨

모든 값 타입은 엔티티의 생명주기에 의존

 

 

9.1 기본값 타입

∘ 자바 기본 타입, 래퍼 클래스, String

∘ 엔티티와 달리 식별자 값이 없고, 독자적인 생명주기가 없음

 

 

9.2 임베디드 타입(복합 값 타입)

∘ 직접 정의한 새로운 값 타입

∘ 엔티티가 가지고 있는 데이터를 응집력 있게 만듦

  - [String city, String street, String zipcode] ⇒ [Address homeAddress]

∘ @Embedded, @Embeddable 사용. 둘 중 하나 생략 가능

∘ 기본 생성자가 필수

∘ 엔티티와 임베디드 타입의 관계는 컴포지션(composition) 관계

 

9.2.1 임베디드 타입과 테이블 매핑

∘ 임베디드 타입은 임베디드 타입 값이 속한 엔티티의 테이블에 매핑

 

9.2.2 임베디드 타입과 연관관계

∘ 임베디드 타입은 값 타입을 포함하거나 엔티티를 참조할 수 있음

 

9.2.3 @AttributeOverride: 속성 재정의

∘ 임베디드 타입에 정의한 매핑정보를 재정의하려면 엔티티에 @AttributeOverride 사용하면 됨

∘ @AttriubteOverride에서 사용할 수 있는 속성 : name, column

∘ @AttributeOverride를 이용하게 되면 어노테이션을 많이 이용하게 됨

한 엔티티에 같은 임베디드 타입을 중복해서 사용하는 일이 많지 않음

 

9.2.4 임베디드 타입과 null

∘ 임베디드 타입이 null이면 매핑한 컬럼 값은 모두 null

 

9.3 값 타입과 불변 객체

9.3.1 값 타입 공유 참조

∘ 임베디드 타입 같은 값 타입을 여러 엔티티에서 공유하면 위험함

 

작성 중...

 

발표 자료 : https://sssoyeon.notion.site/9-307893bc382f46f591413e3a6edc1734?pvs=4 

 

9장 값 타입

9장 값 타입

sssoyeon.notion.site