inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

주문 조회 V3.1: 엔티티를 DTO로 변환 - 페이징과 한계 돌파

나름의 페이징 처리를 만들어봤습니다

538

명아주
0

안녕하세요 초보개발자 명아주입니다.
 
배치를 사용하지 않고, 직접 IN 쿼리를 만들어주게 한번 해봤습니다.
 
이렇게 하면 실제 쿼리가 2번 나가게 됩니다.
조금더 복잡하긴 하지만, jpa 를 잘 모르는 사람이 보기엔 이해하기 더 좋지 않을까 싶습니다.
단점은 2번째 쿼리가 좀 크게 나가는 점과 distinct 문제, 배치 사이즈의 한계같은 부분이 없다는 것이라고 생각합니다.
 
public List<Order> findAllWithPaging(int offset, int limit) {
	List<Long> ids = em.createQuery("select o.id from Order o", Long.class)
			.setFirstResult(offset)
			.setMaxResults(limit)
			.getResultList();

	return em.createQuery("""
					select distinct o from Order o
					join fetch o.member
					join fetch o.delivery
					join fetch o.orderItems oi
					join fetch oi.item
					where o.id in :ids
					""", Order.class)
			.setParameter("ids", ids)
			.getResultList();
}

jpa paging

답변 1

0

명아주

비슷한게 뒤에서 나오는군요..

0

김영한

그래도 직접 코드로 해보신 덕분에 더 많이 배우셨겠어요^^

0

명아주

넵 맞습니다!

스프링 백엔드 개발 로드맵

0

456

1

부트스트랩 유료화

1

428

2

H2 대신 mysql 등 다른 DB를 사용하시는 분들 중 Error creating bean with name 'entityManagerFactory' 에러가 나는 경우

0

427

0

강의 외 질문: 현시점의 querydsl (jOOQ vs Querydsl)

0

8290

2

jpql 무차별 사용에 대해

0

558

1

'스프링 완전 정복' 로드맵을 함께 위한 Java 지식의 정도

1

398

1

섹션 4 어떻게 변경할 것인가? 관련해서 질문드립니다

0

371

0

프로젝션 사용 이유

0

545

1

학습 방법

1

464

1

현재 공부방향이 괜찮은지 궁금합니다

1

560

1

강의 질문 드립니다.

0

573

1

데이터베이스 스키마에 대해 궁금한게 있어요

1

441

1