본문으로 건너뛰기

Pagination

Overview

ElastiCORE는 Entity와 DTO 정의에서 다양한 방식으로 페이징 처리를 지원합니다.

Automatic Pagination Configuration

Configuration via Entity

Entity에 @expose(n) 또는 @service(n) 어노테이션을 지정하면 자동으로 페이징이 적용됩니다:

entity:
Article:
meta: entity @expose(50) # 페이지당 50개 항목
fields:
aid: string @id @genid
title: string(200)! @search(like)

Configuration via DTO

DTO에 @searchable(...) 어노테이션을 지정하면 페이징 필드가 자동 생성됩니다:

dto:
ArticleSearchDTO:
meta: dto @searchable(entity=Article, pageSize=50)
fields:
title: string @search(like)

Auto-generated Pagination Fields

SearchDTO에 자동으로 다음 필드가 생성됩니다:

  • pageNumber: 페이지 번호 (기본값: 0)
  • pageSize / sizeVal: 페이지 크기
  • sortCode: 정렬 필드명

Pagination in DBMS Port

DBMS Port에서 return 타입이 Page<DTO>인 경우 자동으로 페이징 처리됩니다:

port:
ProductDbPortService:
meta: dbms @datasource("product")
methods:
getProductList:
meta: method -- 상품 목록 (페이징)
params:
input: ProductSearchDTO
return: Page<ProductDTO>
pageable: true
nativeQuery: true
query: |
SELECT p.id, p.name, p.price, p.category
FROM products p
WHERE p.active = true

Sort Processing

sortCode 파라미터를 통해 자동 정렬이 적용됩니다:

# 요청 예시
{"sortCode": "name+,age-"}

# 생성되는 SQL
ORDER BY name ASC, age DESC
  • + : 오름차순 (ASC)
  • - : 내림차순 (DESC)