본 내용은 인프런 김영한 강사님 JPA 기본 편 강의를 듣고 정리한 내용입니다.
https://www.inflearn.com/course/ORM-JPA-Basic
자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 - 인프런
K-개빈 킹 이 수식어가 어울리는 강사, 대한민국에서 사투리가 가장 섹시한 강사, 내 프로젝트에 의존성으로 추가하고 싶은 강사 강의결제를 고민하는 분들께 1) 너무 훌륭한 강의입니다. 무엇보
www.inflearn.com
값 타입 컬렉션
말 그대로 값 타입을 컬렉션에 저장하면서 사용하는 것을 말한다.
관계형 데이터베이스는 내부적으로 테이블 내 컬렉션을 저장할 수가 없는데 이를 해결한다.
값 타입 컬렉션 사용법
@ElementCollection, @CollectionTable 어노테이션을 사용한다.
위 코드를 실행시켰을 때, 값 타입 같은 경우 라이프 사이클이 가지고 있는 엔티티가 관리하는 것을 알 수 있다.
즉 갑 타입 컬렉션은 영속성 전의 + 고아 객체 제거 기능을 필수로 가지고 있다고 볼 수 있다.
값 타입 컬렉션은 지연 로딩 전략을 사용한다
값 타입 컬렉션은 여러 제약사항이 존재한다.
1. 엔티티가 아니기에 식별자 라는 개념이 존재하지 않는다.
2. 1의 이유로 값이 변경하면 추적하기 힘들다.
3. 값 타입 컬렉션에 변경 사항이 발생했을 시에, 모든 값을 삭제 후 다시 저장하는 과정을 거친다.(원하는 값만 변경하지 못한다.)
4. 값 타입 컬렉션을 매핑하는 테이블은 기본키를 구성해야 한다. (nul이나 중복저장은 안 된다.)
그래서 실무에서는 위와 같은 제약 사항이 존재하기 때문에, 값 타입 컬렉션 대신 사황에 따라 일대다 관계를 고려한다
-> 일대다 관계로 엔티티를 만들고 영속성 전의 + 고아 객체 제거 기능을 넣어서 값 타입 컬렉션처럼 사용한다.
'JAVA & SPRING > JPA' 카테고리의 다른 글
JPA0 기본편(다양한 연관관계 매핑1, 다대일 & 일대다) (0) | 2024.03.11 |
---|---|
JPA 기본편0(양방향 연관관계와 연관관계의 주인) (0) | 2024.03.11 |
JPA0 기본편(값 타입과 불변 객체, 값 타입 컬렉션) (0) | 2024.03.04 |
JPA 기본편0(값 타입 {기본값 타입, 임베디드 타입}) (0) | 2024.03.04 |
JPA 기본편0 (연관관계 관리 즉시로딩과, 지연로딩) (0) | 2024.03.04 |