-
최종 프로젝트 개발4엘리스트랙 2024. 5. 5. 22:24728x90
모임을 조회할 때 페이지네이션 처리를 해주어야 되는데 데이터가 많으면 뒤쪽의 페이지를 받아올 때 앞의 데이터들을 다 확인하고 넘겨야 돼서 속도가 느려진다는 것을 보았다.
그래서 그걸 방지하는 방법으로 no-offset 방식을 알게 되었는데 no-offset 방식은 마지막으로 조회한 데이터의 마지막 ID나 시간과 같은 특정 값을 기준으로 다음 페이지의 데이터를 조회한다. 예를 들어, 어떤 데이터의 마지막 ID가 100이라면, ID가 101부터 시작하는 데이터를 다음 페이지로 조회한다.
@GetMapping public ResponseEntity<?> getAllMeetings(@RequestParam(name = "lastId", required = false) Long lastId, @RequestParam(name = "size", defaultValue = "5") int size) { return ResponseEntity.ok(meetingService.getAllMeetingsNoOffset(lastId, size)); } @Override public Page<MeetingResponseDto> getAllMeetingsNoOffset(Long lastId, int size) { Page<Meeting> meetings; if (lastId == null) { // 커서가 제공되지 않은 경우 처음부터 조회 meetings = meetingRepository.findAll(PageRequest.of(0, size, Sort.by("id").descending())); } else { // 커서를 기반으로 다음 데이터 조회 meetings = meetingRepository.findByIdLessThanOrderByIdDesc(lastId, PageRequest.of(0, size)); } return meetings.map(this::convertToDto); }
하지만 코치님이 우리의 프로젝트엔 큰 데이터가 들어가지 않으므로 굳이? 라고 하셔서 그냥 페이지네이션으로 했다.
그래도 no-offset이라는 방법을 알게 되어서 지식이 쌓였다.
728x90'엘리스트랙' 카테고리의 다른 글
최종 프로젝트 후기! (0) 2024.05.12 최종 프로젝트 개발5 (0) 2024.05.05 최종 프로젝트 개발3 (1) 2024.04.28 최종 프로젝트 개발2 (1) 2024.04.28 최종 프로젝트 개발1 (0) 2024.04.28