๐ Query Method Paging
โ๏ธ Page ์ธํฐํ์ด์ค
- Slice ์ธํฐํ์ด์ค๋ฅผ ์์ํ๋ค.
- Slice๋ ์๋ผ์ง ์กฐ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์๋ค.
- Page๋ Slice๋ฅผ ์์ํ๋ฏ๋ก ์กฐ๊ฐ์ ๋ํ ์ ๋ณด์ ์ ์ฒด์ ๋ํ ์ ๋ณด๊น์ง ๊ฐ๊ณ ์๋ค.
โ๏ธ Pageable
- ๊ตฌํ์ฒด๋ก PageRequest ์ฌ์ฉ
PageRequest.of(int page, int size, Sort);- page: 0๋ถํฐ ์์ (0=์ฒซ๋ฒ์งธ ํ์ด์ง)
- size: ํ์ด์ง ๋น ์์์
- Sort.by(Order.desc("ํ๋"));
- getContent() ๋ฉ์๋๋ก ์ค์ ๋ด๋ถ์ ๊ฐ ํ์ธ ๊ฐ๋ฅ
โ๏ธ Slice ์ธํฐํ์ด์ค ๋ฉ์๋
- getNumberOfElements();
- getSize()
- hasContent();
- isFirst();
- isLast();
- hasNext();
- hasPrevious()
`Slice`๋ฅผ ํตํด ํ์ด์ง ๋จ์๋ก ์๋ผ์ง ์์์ ๋ํ ์ ๋ณด์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
โ๏ธ JPA ๋ค์ด๋ฐ ์ฟผ๋ฆฌ์ ํ์ด์ง ์ ์ฉ
๋ฆฌํดํ์
์ Page<T> ๋ก ํ๊ณ ๋งค๊ฐ๋ณ์๋ก Pageable ์ ๋ฐ์์ค๋ค.
[ User์ ์ด๋ฆ์ผ๋ก User๋ฅผ ์ฐพ๊ณ Pageable์ ํ์ด์ง ์ ๋ณด์ ๋ง๊ฒ ๋ฆฌํดํ๋ค. ]
Page<User> findUserByName(Pageable pageable, String name);
๐ Query Method Sorting
โ๏ธ JPA ๋ค์ด๋ฐ ์ฟผ๋ฆฌ ๊ธฐ๋ฐ ์ ๋ ฌOrderByDesc , OrderByAsc
[ Top์ ์ด์ฉํด ์ฒซ๋ฒ์งธ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ , AgeDesc๋ก ๋์ด์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ์ฌ ๋์ด๊ฐ ๊ฐ์ฅ ๋ง์ User๊ฐ ์กฐํ๋๋ค. ]
User findUserTopOrderByAgeDesc();
โ๏ธ ๋ค์ด๋ฐ ๊ธฐ๋ฐ ์ ๋ ฌ ๋ค์ค ์กฐ๊ฑด
And, Or์ ์ฐ์ง์๊ณ ๊ทธ๋๋ก ์ฐ๊ฒฐํ๋ค. (๊ทธ๋๋ก ๋์ดํ๋ค.)
[ First๋ฅผ ์ด์ฉํด ์ฒซ๋ฒ์งธ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ , AgeDesc๋ฅผ ํตํด ๋์ด ๊ธฐ์ค ๋ด๋ฆผ์ฐจ์ ๊ฒฐ๊ณผ๋ฅผ NameAsc๋ก ์ด๋ฆ ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ User๊ฐ ์กฐํ๋๋ค. ]
User findUserFirstOrderByAgeDescNameAsc();
โ๏ธ Sort๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ์ ๋ ฌ
Sort๋ ์๋์ ๊ฐ์ด ์ด๊ธฐํ ๊ฐ๋ฅํ๋ค.
์ ๋ ฌ์๋ ์์๊ฐ ์กด์ฌํ๋ฏ๋ก ์๋ํ ๋๋ก ์์๋ฅผ ๋ง์ถฐ `Order` ๋ฅผ ์ ๋ฌํด์ฃผ์ด์ผ ํ๋ค.
[ ๋์ด ๊ธฐ์ค ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ ํ ์ด๋ฆ ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ]
Sort.by(Order.desc("age"), Order.asc("name"));
๋ค์ด๋ฐ ์ฟผ๋ฆฌ๋ณด๋ค ๊ฐ๋ ์ฑ ์ธก๋ฉด์์ ๋ ์ข๋ค.
์ด์ ๋ค์ด๋ฐ ์ฟผ๋ฆฌ ๊ธฐ๋ฐ ๋ค์ค ์กฐ๊ฑด ์์ ์์ ์ฌ์ฉํ `findUserFirstOrderByAgeDescNameAsc` ์ ๋์ผํ ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ด๋ ์ฟผ๋ฆฌ์ด์ง๋ง ์ด๋ฆ๋ ์งง๊ณ ๋งค๊ฐ๋ณ์๋ก Sort๋ฅผ ๋ฐ๋ ๊ฒ์ด ๋์ฑ ๋ช ์์ ์ด๋ค.
[ ๋์ด ๊ธฐ์ค ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ ํ ์ด๋ฆ ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋ ๊ฒฐ๊ณผ์์ ์ฒซ๋ฒ์งธ ๊ฐ์ ์กฐํํ๋ค. ]
User findUserFirst(Sort sort);
์ฌ์ฉ์์
User user = userRepository.findUserFirst(Sort.by(Order.desc("age"), Sort.by(Order.asc("name"));
๐ ์๊ฐ์ธ์ฆ

ํจ์คํธ์บ ํผ์ค [์ง์ฅ์ธ ์ค๋ฌด๊ต์ก]
ํ๋ก๊ทธ๋๋ฐ, ์์ํธ์ง, UX/UI, ๋ง์ผํ , ๋ฐ์ดํฐ ๋ถ์, ์์ ๊ฐ์, The RED, ๊ตญ๋น์ง์, ๊ธฐ์ ๊ต์ก, ์๋น์ค ์ ๊ณต.
fastcampus.co.kr
๋ณธ ํฌ์คํ ์ ํจ์คํธ์บ ํผ์ค ํ๊ธ ์ฑ๋ฆฐ์ง ์ฐธ์ฌ๋ฅผ ์ํด ์์ฑ๋์์ต๋๋ค.
'JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 6์ผ์ฐจ - ์ํฐํฐ ์๋ช ์ฃผ๊ธฐ, ์์์ฑ ์ปจํ ์คํธ (0) | 2021.09.11 |
|---|---|
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 5์ผ์ฐจ - JpaRepository, @Query (0) | 2021.09.10 |
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 4์ผ์ฐจ - EntityListener (0) | 2021.09.09 |
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 3์ผ์ฐจ - Entity, ๊ด๊ณ (0) | 2021.09.08 |
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 1์ผ์ฐจ - Query Method (0) | 2021.09.06 |