ํ์ด์ง๊ณผ ์ ๋ ฌ์ ์ง์ํ๋ ์กฐํ API๋ฅผ ๋ง๋ค์ด๋ณด์.
ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ์ํด ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ๋ ํ๋ผ๋ฏธํฐ
ex)
/api?page=1&size=10&isAsc=true&sortBy=title
1ํ์ด์ง์์ 10๊ฐ๋ฅผ ์ ๋ชฉ๊ธฐ์ค ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ธ์.
ํ์ด์ง์ ์ํด Pageable
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค.
Pageable
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ static ๋ฉ์๋๊ฐ PageRequest
์ ์๋ค. ์ด๊ฒ์ ์ฌ์ฉํ๋ค.
PageRequest
๋
๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ Pageable
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
ํ์ฌ ํ์ด์ง์ ํ์ด์ง ๋น ์์ ์๋ Controller
๋ก๋ถํฐ ๋ฐ์ page
์ size
๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๊ณ ์ ๋ ฌ๋ถ๋ถ๋ง ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
์ ๋ ฌ์ ๊ฒฝ์ฐ Sort
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
Sort
๊ฐ์ฒด์๋ ์ ๋ ฌ๋ฐฉํฅ, ์ ๋ ฌ๊ธฐ์ค ํ๋๊ฐ ํฌํจ๋๋ค.
์ ๋ ฌ๋ฐฉํฅ์ Sort
ํด๋์ค ์์ ์๋ static enum ํด๋์ค์ธ Direction
์ ์ฌ์ฉํ๋ค.
Sort.Direction direction = isAsc ? Sort.Direction.ASC : Sort.Direction.DESC;
์ ๋ ฌ๊ธฐ์ค ํ๋์ ๋ํ ์ฒ๋ฆฌ๋ ์ฒ์ ์์๋ค.
์ ์งํ๊ฒ ํ๋์ ์ด๋ฆ์ ๊ทธ๋๋ก Sting ํ์
์ผ๋ก Sort
์ ๋๊ฒจ์ฃผ๋ฉด ๋๋ค.
Sort
์ ์์ฑํ๋ ๊ฒฝ์ฐ์๋ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค. (by
)
properties
๋ก ์ ๋ ฌ๊ธฐ์ค ํ๋๋ฅผ ๋ฐ๋๋ฐ ๊ฐ๋ณ์ธ์๋ก ๋ฐ๋๋ค. ๋ง์ฝ ์ ๋ ฌ๊ธฐ์ค์ด ๋ ๊ฐ ์ด์์ด๋ผ๋ ์ ์ฒ๋ฆฌํด ์ค ๊ฒ ๊ฐ๋ค.
Sort ๊ฐ์ฒด์์ฑ
Sort sort = Sort.by(direction, "ํ๋์ด๋ฆ", ...);
Service ์ธก ํ๋ฆ์ ๋ฆฌ
์กฐํ์กฐ๊ฑด์ด ์๋ค๋ฉด ๊ทธ๋ฅ ๋ค์ด๋ฐ์ฟผ๋ฆฌ + ์ธ์๋ก ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
์ค์ํ ๊ฒ์ Pageable
์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๊ณ ๋ฆฌํดํ์
์ ์ปฌ๋ ๋ ฅ ๋์ Page
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
Page<์ํฐํฐ_ํ์
> findAll(Pageable pageable);
ํด๋ผ์ด์ธํธ ์ธก์์ ํ์ด์ง์ ์ํด ๊ฐ์ ธ์ผ ํ ๊ฐ์ ์๊ฐํด๋ณด์.
์ผ๋จ ์ด์ ๋๋ง ์์ผ๋ฉด ํด๋ผ์ด์ธํธ ์ชฝ์์๋ ํ์ด์ง ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๊ฒ ๊ฐ๋ค.
JPA๋ฅผ ํตํด์ ์ป์ Page
ํ์
๊ฐ์ฒด๋ฅผ ๊ทธ๋ฅ ํด๋ผ์ด์ธํธ ์ชฝ์ผ๋ก ๋ฆฌํดํด๋ณด์.
๊ทธ๋ฅ Page
ํ์
๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๋ด๋ ค์คฌ๋๋ฐ ํ์ํ ๋ถ๋ถ์ด ๋ค ๊ตฌ์ฑ๋์ด ์๋ค..
Page
๊ฐ์ฒด๋ฅผ ๊ทธ๋๋ก ๋ด๋ ค์ฃผ๋ ๊ฒ๋ ํฌ๊ฒ ์๊ด์ ์์ ๊ฒ ๊ฐ์๋ฐ ์ง์ ํ์ํ ๋ถ๋ถ๋ง ์๋ต๊ฐ์ฒด๋ก ๋ง๋ค์ด์ ๋ด๋ ค์ฃผ๋ ๊ฒ๋ ๊น๋ํ๊ณ ์ข์ ๊ฒ ๊ฐ๋ค.