컬렉션
JPA는 자바에서 기본으로 제공하는 Collection, List, Set, Map 컬렉션을 지원한다.
자바 컬렉션 인터페이스의 특징
- Collection : 자바가 제공하는 최상위 컬렉션. 하이버네이트는 순서를 보장하지 않고 중복을 허용한다고 가정한다.
- Set : 순서를 보장하지 않고 중복을 허용하지 않는 컬렉션.
- List : 순서를 보장하고 중복을 허용한다.
- Map : Key, Value 구조로 되어있는 특수한 컬렉션.
* 순서가 있는 컬렉션은 데이터베이스에 순서 값도 함께 관리한다.
JPA와 컬렉션
하이버네이트는 엔티티를 영속 상태로 만들때 컬렉션 필드를 하이버네이트에서 준비한 컬렉션으로 감싸서 사용한다.
(원본 컬렉션을 감싸고 있는 내장 컬렉션을 생성해서 이 내장 컬렉션을 사용하도록 참조를 변경한다. 하이버네이트가 제공하는 내장 컬렉션은 원본 컬렉션을 감싸고 있어서 래퍼 컬렉션으로도 부른다.)
@Converter
: 컨버터를 사용하여 엔티티의 데이터를 변환해서 데이터베이스에 저장할 수 있다.
컨버터 클래스는 @Converter 어노테이션을 사용하고 AttributeConverter 인터페이스를 구현해야 한다. 그리고 제네릭에 현재 타입과 변환할 타입을 지정해야 한다.
리스너
: 엔티티에서 발생한 이벤트를 처리한다.
이벤트 종류와 발생 시점
이벤트 적용 위치
- 엔티티에 직접 적용
- 별도의 리스너 등록
- 기본 리스너 사용
여러 리스너를 등록했을 때 이벤트 호출 순서
1. 기본 리스너
2. 부모 클래스 리스너
3. 리스너
4. 엔티티
엔티티 그래프 기능
: 엔티티를 조회할 때, 조회시점에 연관된 엔티티들을 선택해서 함께 조회한다.
그러기 위해선 글로벌 fetch 옵션을 FetchType.EAGER로 설정하거나, JPQL에서 페치 조인을 사용한다.
... 아직 잘 모르겠음
'🖤 Book Study > 자바 ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
16장. 트랜잭션과 락, 2차 캐시 (0) | 2023.07.25 |
---|---|
15장. 고급주제와 성능최적화 (0) | 2023.07.18 |
13장. 스프링 데이터 JPA (0) | 2023.07.04 |
12장. 스프링 데이터 JPA (나중에작성) (0) | 2023.06.29 |