ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 최종 프로젝트 개발4
    엘리스트랙 2024. 5. 5. 22:24
    728x90

     

     

     

    모임을 조회할 때 페이지네이션 처리를 해주어야 되는데 데이터가 많으면 뒤쪽의 페이지를 받아올 때 앞의 데이터들을 다 확인하고 넘겨야 돼서 속도가 느려진다는 것을 보았다.

    그래서 그걸 방지하는 방법으로 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
Designed by Tistory.