๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

pagenation2

[JPA] ์ปค์„œ ๊ธฐ๋ฐ˜ pagenation ๊ตฌํ˜„ํ•˜๊ธฐ ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ Cursor ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‘๋‹ตํ•ด์ค€ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์Œ n๊ฐœ ์š”์ฒญ/์‘๋‹ต offset ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด SELECT * FROM items WHERE ์กฐ๊ฑด๋ฌธ ORDER BY id DESC OFFSET ํŽ˜์ด์ง€๋ฒˆํ˜ธ LIMIT ํŽ˜์ด์ง€์‚ฌ์ด์ฆˆ cursor ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. SELECT * FROM items WHERE ์กฐ๊ฑด๋ฌธ AND id < ๋งˆ์ง€๋ง‰์กฐํšŒ_id ORDER BY id DESC LIMIT ํŽ˜์ด์ง€์‚ฌ์ด์ฆˆ ์ง์ „ ์กฐํšŒ ๊ฒฐ๊ณผ์˜ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋กœ ๋“ค์–ด๊ฐ€๋Š”๋ฐ SQL ํ‚ค์›Œ๋“œ๊ฐ€ ์•„๋‹Œ ๊ณ ์ •๋œ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋•Œ๋ฌธ์— ์ •์  ์ฟผ๋ฆฌ๋กœ์„œ์˜ ํ•œ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. (๋ฌผ๋ก  ๋™์  ์ฟผ๋ฆฌ์ธ QueryDSL์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.) controller /** * ๊ฒŒ์‹œ๋ฌผ page .. 2023. 3. 1.
[JPA] ์˜คํ”„์…‹ ๊ธฐ๋ฐ˜ Pagenation ๊ตฌํ˜„ํ•˜๊ธฐ Spring Data JPA์—์„œ๋Š” Pagination์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก Pageable ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์˜คํ”„์…‹ ๊ธฐ๋ฐ˜ Pagenation DB์˜ offset์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ‘ํŽ˜์ด์ง€’ ๋‹จ์œ„๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์š”์ฒญ/์‘๋‹ต ํ•œ๋‹ค. controller /** * ๊ฒŒ์‹œ๋ฌผ page ์กฐํšŒ * * @param pageable * @return Page */ @GetMapping(produces = APPLICATION_JSON_VALUE) public ApiResponse getPosts(@PageableDefault(sort = "id", direction = Sort.Direction.DESC) Pageable pageable) { Page pages = postService.findAll(pageable); ret.. 2023. 3. 1.