ํ•ญ์ƒ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ Spring์— Pageable ๊ธฐ๋Šฅ์ด ์žˆ๊ธธ๋ž˜ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค

Pagination

ํŽ˜์ด์ง€๋„ค์ด์…˜์ด๋ž€?

์ฝ˜ํ…ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆ„์–ด ๋‹ค์Œ ๋˜๋Š” ์ด์ „ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ

Pageable

Pageable์ด๋ž€?

Spring ์—์„œ ์ œ๊ณตํ•˜๋Š” Pagination์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค

@GetMapping("")
public ResponseEntity<?> getProducts(Pageable pageable) {
    return ResponseEntity.status(200).body(productService.getProducts(pageable));
}
  • ํ˜ธ์ถœ ์‹œ์— Pageable ๊ฐ์ฒด๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด ์Šคํ”„๋ง์—์„œ ๋งคํ•‘ํ•ด์ค€๋‹ค
  • ?page=1&size=10&sort=name,DESC ์˜ ํŒจํ„ด์œผ๋กœ API ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค

page : ํ•œ ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘ page : ํ™•์ธํ•  ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ sort : ์ •๋ ฌ ๊ธฐ์ค€

์‹ค์ œ ์‚ฌ์šฉ

  • ์‹ค์ œ๋กœ ํ˜ธ์ถœํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํŽ˜์ด์ง€ ์ •๋ณด๋“ค์ด ๋‚˜์™€์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

์ฒ˜์Œ์— ํŽ˜์ด์ง€ 1๋ฒˆ๋ถ€ํ„ฐ ํ˜ธ์ถœํ–ˆ๋Š”๋ฐ ์ˆœ์„œ๊ฐ€ ์ด์ƒํ•˜๊ธธ๋ž˜ ๋ญ์ง€? ํ–ˆ๋Š”๋ฐ ์•Œ๊ณ ๋ณด๋‹ˆ ํŽ˜์ด์ง€๋„ 0๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š”๊ฑฐ์˜€๋‹ค..