TIL

TIL - 쇼핑몰 프로젝트(Plain Old) v1 → v2 5일 차. Pageable쿼리는 fetch를 지원하지 않아.

김뚜루 2023. 8. 1. 20:39

1. @ElementCollection의 기본 fetctType은 lazy이다.

2. JPA를 사용하면 @Treansactional 범위에서 엔티티 속성에 접근할 수 있어 크게 문제가 되지 않지만 JDSL-Reactive는 Hibernate-Reactive를 사용하면 @Transactional 지원을 하지 않아 session 범위에서 수동으로 fetch를 하거나 쿼리를 나눠야 한다.

3. JDSL - PageableQueryDSL에서 session 범위에서 fetch(Boo::bars)를 했는데 여전히 Lazy initialize exception이 발생했다. 원인은 PageableQueryDSL에서 fetch를 지원하지 않기 때문.

4. 참고로 JDSL은 @ElementalCollection의 fetchType 지원하지 않기 때문 @OneToMany(fetchType = FetcyType.Eager)을 사용해야만 했다.

5. 위 이미지를 통해 비슷한 조건에서 페이징쿼리가 아닌 경우 정상적으로 fetch가 되는 것을 볼 수 있다.