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
'Back-End > 자바 ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
[JPA] 자바 ORM 표준 JPA 프로그래밍_7장 (0) | 2023.06.24 |
---|---|
[JPA] 자바 ORM 표준 JPA 프로그래밍_6장 (0) | 2023.06.20 |
[JPA] 자바 ORM 표준 JPA 프로그래밍_5장 (0) | 2023.06.05 |
[JPA] 자바 ORM 표준 JPA 프로그래밍_4장 (0) | 2023.05.29 |
[JPA] 자바 ORM 표준 JPA 프로그래밍_3장 (0) | 2023.05.29 |