네이버 클라우드 캠프

JPA_값 타입 객체

99duuk 2024. 5. 28. 16:47

값 타입 객체

상품은 고유한 pk 가지는 하나의 온전한 엔티티이고

파일은 엔티티에 속해있는 데이터이다.

 

JPA에서는 ‘값 타입 객체’ 

컬렉션으로 처리할 때는 @ElementCollection을 활용한다.

 

‘값 타입 객체’는 엔티티와 달리 pk가 없는 데이터이다.

 

@Embeddable 어노테이션 이용해서 

해당 클래스의 인스턴스가 값 타입 객체임을 명시한다.

 


 

 

JPA에서는 엔티티와 타입 객체를 구분합니다. 엔티티는 고유한 식별자(Primary Key, PK) 가지며 독립적으로 존재할 있는 객체입니다. 반면, 타입 객체는 엔티티에 속하며 고유한 식별자가 없습니다. 타입 객체는 엔티티의 속성으로 간주되며, 독립적으로 식별되지 않습니다.

 

 

[요약]

@Embeddable 로 정의한다.

 

@ElementCollection 을 사용하여 엔티티에 포함되고, 컬렉션을 처리하고 활용한다.

 

값 타입 객체는 고유 식별자가 없으며, JPA가 엔티티의 식별자를 통해 관리한다.

 

 

 


컬렉션을 처리한다는 것

 JPA가 엔티티 내부의 컬렉션(리스트, 셋 등) 타입의 값을 관리하고

데이터베이스에 저장하거나 불러오는 작업을 수행한다는 의미한다.

 

 여기서 컬렉션은 값 타입 객체의 컬렉션을 의미하며,

이 컬렉션은 엔티티의 속성으로 포함된다.

 

 

[값 타입 컬렉션의 처리]

저장:

         엔티티를 저장할 때, 엔티티 내부에 포함된 값 타입 컬렉션도 함께 저장된다.

         JPA는 값 타입 컬렉션을 위한 별도의 테이블을 생성하고, 엔티티의 식별자와 컬렉션 요소를 매핑한다.

 

불러오기:

         엔티티를 조회할 때, 엔티티에 포함된 값 타입 컬렉션도 함께 조회된다.

         JPA는 엔티티와 값 타입 컬렉션의 관계를 통해 데이터베이스에서 값을 불러온다.

 

수정:

         엔티티와 값 타입 컬렉션을 수정하면, JPA는 변경된 내용을 데이터베이스에 반영한다.

         컬렉션에 요소를 추가하거나 삭제하는 작업도 처리된다.

 

 

 

 

값 타입 객체를 사용하여 JPA 엔티티를 MySQL 데이터베이스에 매핑할 때,

JPA는 값 타입 객체를 별도의 테이블에 저장한다.

 

이 테이블은 주 엔티티의 기본 키를 외래 키로 포함하고, 값 타입 객체의 필드를 컬럼으로 포함한다.

 

 

 

 

MySQL에서의 스키마 구성

JPA는 다음과 같은 두 개의 테이블을 생성합니다:

  1. tbl_product 테이블: Product 엔티티의 데이터를 저장합니다.
  2. tbl_product_image 테이블: ProductImage 값 타입 객체의 데이터를 저장합니다.

 

 

 

'네이버 클라우드 캠프' 카테고리의 다른 글

CORS, CSRF  (0) 2024.05.31
JPA_엔티티 그래프  (0) 2024.05.28
React 입문 -  (0) 2024.05.19
React 입문 - Hook, props  (0) 2024.05.18
React 입문 - 기본 파일 구조  (0) 2024.05.17