나름의 페이징 처리를 만들어봤습니다
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();
}
스프링 백엔드 개발 로드맵
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





