값 타입 객체
상품은 고유한 pk 가지는 하나의 온전한 엔티티이고
파일은 엔티티에 속해있는 데이터이다.
JPA에서는 ‘값 타입 객체’
컬렉션으로 처리할 때는 @ElementCollection을 활용한다.
‘값 타입 객체’는 엔티티와 달리 pk가 없는 데이터이다.
@Embeddable 어노테이션 이용해서
해당 클래스의 인스턴스가 값 타입 객체임을 명시한다.
JPA에서는 엔티티와 값 타입 객체를 구분합니다. 엔티티는 고유한 식별자(Primary Key, PK)를 가지며 독립적으로 존재할 수 있는 객체입니다. 반면, 값 타입 객체는 엔티티에 속하며 고유한 식별자가 없습니다. 값 타입 객체는 엔티티의 속성으로 간주되며, 독립적으로 식별되지 않습니다.
[요약]
@Embeddable 로 정의한다.
@ElementCollection 을 사용하여 엔티티에 포함되고, 컬렉션을 처리하고 활용한다.
값 타입 객체는 고유 식별자가 없으며, JPA가 엔티티의 식별자를 통해 관리한다.
컬렉션을 처리한다는 것은
JPA가 엔티티 내부의 컬렉션(리스트, 셋 등) 타입의 값을 관리하고
데이터베이스에 저장하거나 불러오는 작업을 수행한다는 의미한다.
여기서 컬렉션은 값 타입 객체의 컬렉션을 의미하며,
이 컬렉션은 엔티티의 속성으로 포함된다.
[값 타입 컬렉션의 처리]
저장:
엔티티를 저장할 때, 엔티티 내부에 포함된 값 타입 컬렉션도 함께 저장된다.
JPA는 값 타입 컬렉션을 위한 별도의 테이블을 생성하고, 엔티티의 식별자와 컬렉션 요소를 매핑한다.
불러오기:
엔티티를 조회할 때, 엔티티에 포함된 값 타입 컬렉션도 함께 조회된다.
JPA는 엔티티와 값 타입 컬렉션의 관계를 통해 데이터베이스에서 값을 불러온다.
수정:
엔티티와 값 타입 컬렉션을 수정하면, JPA는 변경된 내용을 데이터베이스에 반영한다.
컬렉션에 요소를 추가하거나 삭제하는 작업도 처리된다.
값 타입 객체를 사용하여 JPA 엔티티를 MySQL 데이터베이스에 매핑할 때,
JPA는 값 타입 객체를 별도의 테이블에 저장한다.
이 테이블은 주 엔티티의 기본 키를 외래 키로 포함하고, 값 타입 객체의 필드를 컬럼으로 포함한다.
MySQL에서의 스키마 구성
JPA는 다음과 같은 두 개의 테이블을 생성합니다:
- tbl_product 테이블: Product 엔티티의 데이터를 저장합니다.
- 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 |