피드로 돌아가기
Pagination records using JooqTemplate
Dev.toDev.to
Database

jOOQ 기반의 추상화된 LimitSelect 인터페이스를 통한 Pagination 자동화 구현

Pagination records using JooqTemplate

ts54322026년 6월 15일2intermediate

Context

반복적인 Pagination 쿼리 작성 과정에서 발생하는 Boilerplate Code의 중복 문제 발생. Total Count 계산과 데이터 페이징을 위해 개별적으로 쿼리를 작성해야 하는 비효율적 구조 분석.

Technical Solution

  • LimitSelect 인터페이스 도입을 통한 SELECT 및 FROM 절의 캡슐화 설계
  • LimitRange 객체를 활용한 Offset 및 Limit 값의 유연한 제어 메커니즘 구축
  • 데이터 리스트와 Total Count를 동시에 반환하는 LimitResult Generic Wrapper 클래스 정의
  • resultFields 리스트 전달 기능을 통한 필요한 컬럼만 조회하는 Selective Projection 구현
  • LimitRange.all() 및 Overload 메서드 구성을 통한 다양한 조회 모드(전체 조회, 부분 조회, 페이징 조회) 지원

- 반복되는 Pagination 로직을 인터페이스 기반의 전략 패턴으로 분리하여 쿼리 재사용성 검토 - Total Count 쿼리와 데이터 쿼리를 하나의 Wrapper 클래스로 묶어 API 응답 구조 일원화 - Projection에 필요한 필드를 동적으로 지정하여 Database I/O 부하 최적화

원문 읽기