๐ ๋ค์ด๊ฐ๋ฉฐ
์ด๋ฒ ๊ธ์์๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ํ์์ธ ํ์ด์ง(Paging)์ Spring Data JPA๋ก ๊ตฌํํ๋ ๋ฒ์ ์ ๋ฆฌํ๋ค.
ํ์ด์ง์ด๋? ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์์ ๋จ์๋ก ๋๋์ด ๊ฐ์ ธ์ค๋ ๊ธฐ์ . ํ ๋ฒ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ๋ณด๋ค ํจ์จ์ ์ด๋ฉฐ, ์น์์ ํ์ด์ง๋ณ๋ก ๋ณด์ฌ์ค ๋ ์์ฃผ ์ฐ์ธ๋ค.
1. Pageable๊ณผ Page
Spring Data JPA์ ํ์ด์ง์ Pageable(์์ฒญ ์ ๋ณด)๊ณผ Page(๊ฒฐ๊ณผ)๋ก ์ด๋ค์ง๋ค.
1
2
3
4
| public Page<Product> getProductsByPage(int pageNumber, int pageSize) {
Pageable pageable = PageRequest.of(pageNumber, pageSize); // ์์ฒญ ์ ๋ณด ์์ฑ
return productRepository.findAll(pageable); // Page ๋ฐํ
}
|
| ์์ | ์ญํ |
|---|
PageRequest.of(๋ฒํธ, ํฌ๊ธฐ) | ํ์ด์ง ์์ฒญ ์์ฑ |
findAll(pageable) | ํด๋น ํ์ด์ง ๋ฐ์ดํฐ ์กฐํ |
Page<T> | ํ์ด์ง๋ ๊ฒฐ๊ณผ (์ ์ฒด ๊ฐ์ยท์ด ํ์ด์ง ํฌํจ) |
2. ์ ๋ ฌ ์กฐ๊ฑด ์ถ๊ฐ (Sort)
1
2
3
4
| public Page<Product> getSortedProductsByPage(int pageNumber, int pageSize, String sortBy) {
Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by(sortBy));
return productRepository.findAll(pageable);
}
|
Sort.by(์ ๋ ฌ๊ธฐ์ค)์ PageRequest์ ๋ฃ์ด ํ์ด์ง๊ณผ ์ ๋ ฌ์ ํจ๊ป ์ฒ๋ฆฌํ๋ค.
3. Pageable์ ์ฃผ์ ๋ฉ์๋
1
| Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by(sortBy));
|
| ๋ฉ์๋ | ๋ฐํ |
|---|
getPageNumber() | ํ์ฌ ํ์ด์ง ๋ฒํธ |
getPageSize() | ํ์ด์ง๋น ์์ดํ
์ |
getSort() | ์ ๋ ฌ ์กฐ๊ฑด |
๐ ์ฃผ์์ฌํญ๊ณผ ํ
| ํญ๋ชฉ | ๋ด์ฉ |
|---|
| ์ ๋ ฌ ์กฐ๊ฑด ๋ช
์ | ์์ผ๋ฉด ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด ๊นจ์ง ์ ์์ |
| ์ธ๋ฑ์ค ํ์ธ | ๋๋ ๋ฐ์ดํฐ๋ ์ธ๋ฑ์ค๋ก ์ฑ๋ฅ ํฅ์ |
| ํ์ด์ง ํฌ๊ธฐ | ๋์ฉ๋์ ์ ์ ํ ํฌ๊ธฐ ์ ํ์ผ๋ก ํจ์จ ํ๋ณด |
๐ ์ ๋ฆฌ
1
2
3
4
5
| ํ์ด์ง
โโ ์์ฒญ PageRequest.of(๋ฒํธ, ํฌ๊ธฐ [, Sort])
โโ ์กฐํ findAll(pageable) โ Page<T>
โโ ์ ๋ ฌ Sort.by(๊ธฐ์ค)
โโ ์ฃผ์ ์ ๋ ฌ ๋ช
์ + ์ธ๋ฑ์ค + ํ์ด์ง ํฌ๊ธฐ
|
| ๊ฐ๋
| ํ ์ค ์ ์ |
|---|
| Pageable | ํ์ด์ง ์์ฒญ ์ ๋ณด(๋ฒํธยทํฌ๊ธฐยท์ ๋ ฌ) |
| Page | ํ์ด์ง ๊ฒฐ๊ณผ(๋ฐ์ดํฐ + ๋ฉํ) |
| Sort | ์ ๋ ฌ ์กฐ๊ฑด |
ํ์ด์ง์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋๋ ์ ํจ์จ์ ์ผ๋ก ๋ค๋ฃจ๋ ํ์ ๊ธฐ๋ฅ์ด๋ค. PageRequest.of(...) ํ๋๋ก ํ์ด์งยทํฌ๊ธฐยท์ ๋ ฌ์ ์ง์ ํ ์ ์์ด, ๋ช ์ค๋ก ๊ฒฌ๊ณ ํ ํ์ด์ง์ ๊ตฌํํ ์ ์๋ค.
Comments powered by Disqus.