JPA는 기본적으로 findAll(Pageable p) 또는 findAllBy(Pageable p)의 메소드 네이밍을 통하여 Page리스트를 반환받을 수 있다. 이러한 Page를 직접 구현하는 방법은 뭘까?
다음은 List를 Page로 직접 변환하는 과정이다.
// 원래 이 메소드는 정의해놓으면 Page를 자동반환 가능하다 지금은 Test느낌으로
List<User> userList = userRepotiroy.findAllByName(name);
// 요청으로 들어온 page와 한 page당 원하는 데이터의 갯수
PageRequest pageRequest = PageRequest.of(page, size);
int start = (int) pageRequest.getOffset();
int end = Math.min((start + pageRequest.getPageSize()), userList.size());
Page<User> userPage = new PageImpl<>(userList.subList(start, end), pageRequest, userList.size());