MySqlPagingQueryProvider 살펴보기
11
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

MySqlPagingQueryProvider와 JdbcPagingItemReader의 Pagination 이슈 분석

이 게시물은 spring-batch 환경에서 MySqlPagingQueryProvider를 사용할 때 발생하는 두 가지 주요 Pagination 이슈와 그 해결책에 대해 설명합니다.

첫 번째 이슈: 단일 sort key 사용 시 발생하는 데이터 누락 문제

  • MySqlPagingQueryProvider는 이전 페이지의 마지막 sort key 값을 기준으로 다음 페이지를 조회하는 전략을 사용합니다.
  • created_at 컬럼처럼 중복된 값이 많은 컬럼을 sort key로 사용하면 일부 데이터가 누락될 수 있습니다.
  • 해결책은 unique한 제약조건이 있는 컬럼(id 등)을 sort key로 사용하는 것입니다.

두 번째 이슈: group clause와 table alias 조합에서 발생하는 SQL 오류

  • group clause가 포함되면 MySqlPagingQueryProvider는 결과를 inline view(MAIN_QRY)로 감쌉니다.
  • 이 때 sort key에 table alias를 포함하면 inline view 밖에서 인식하지 못해 SQLSyntaxErrorException이 발생합니다.
  • 해결책은 sort key에서 table alias를 제거하는 것입니다.

요약

  • MySqlPagingQueryProvider는 where 절에 sort key 조건을 추가하여 페이지를 나누기 때문에 sort key 선택에 주의해야 합니다.
  • group by 절이 있으면 inline view를 생성하므로 sort key에 alias를 포함하지 않아야 합니다.

연관 게시글