Pageable
ํ์ด์ง, ์ ๋ ฌ์ ํ๊ธฐ ์ํด ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค
@GetMapping
public ResponseEntity queryEvents(Pageable pageable, PagedResourcesAssembler<Event> assembler){
Page<Event> page = this.eventRepository.findAll(pageable);
var pagedResources = assembler.toModel(page, e-> new EventResource(e));
pagedResources.add(new Link("/docs/index.html#resources-events#resources-events-list").withRel("profile"));
return ResponseEntity.ok(pagedResources);
}
์์ ๊ฐ์ด Repository์์ find์์ Pageable์ ๋ณ์๋ฅผ ๋ฃ์ด์ฃผ๋ฉด Repository๋ JPARepository๋ฅผ ์์๋ฐ๊ณ ์ด๋ PagingAndSortingRepository๋ฅผ ์์๋ฐ๊ณ ์์ด find์ pageable์์ฑ์ ๋ฃ์ด ์ค ์ ์๋ค.
๊ทธ๋ฌ๋ฉด ์ฟผ๋ฆฌ๋ฌธ์ page
,size(default =20)
,sort(ํ๋๋ฉฐ,์ ๋ ฌ ๊ธฐ์ค(ASC/DESC)
์์ฑ์ผ๋ก paginationํ ์ ์๋ค.
PagedResourcesAssembler
pagination์ ์ํ ํ json๋ฐ์ดํฐ์ link๋ฅผ ์ฝ์ ํด์ฃผ๊ธฐ์ํด resource๋ก ๋ณํ ํด์ฃผ๋ ํด๋์ค
๋ด๋ถ์ ์ผ๋ก RepresentationModelAssembler์ ์์๋ฐ๊ณ ์์ด pageํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ๋ฐ๊พธ๊ณ ๊ฐ์ฒด์ ๋งํฌ๋ฅผ ์ถ๊ฐ ํด์ค ์ ์๋ค.
var pagedResources = assembler.toModel(page, e-> new EventResource(e));
pagedResources.add(new Link("/docs/index.html#resources-events#resources-events-list").withRel("profile"));
Last updated