페이징 처리에서 offset/limit에 대한 질문
2
작성한 질문수 4
안녕하세요! 페이징 처리 방식에 대해 궁금한 점이 있어 질문드립니다.
코드를 보니 요청값으로 offset과 limit을 받고 이를 Pageable로 변환하고 있습니다.
data class OffsetLimit(
val offset: Int,
val limit: Int,
) {
fun toPageable(): Pageable {
return PageRequest.of(offset / limit, limit)
}
}
그런데 이 방식은 offset이 limit의 배수가 아닌 경우 의도하는 바와 다르게 동작할 수 있을 거 같다는 생각이 들었습니다.
예를 들어 offset=15, limit=10인 경우 15번째 데이터부터 10개인 15~19번째 데이터를 조회하는 것이 자연스럽다고 생각했습니다.
그런데 현재 구현에서는 offset/limit 계산으로 인해 PageRequest.of(1,10)이 되고 결과적으로 10~19번째 데이터가 조회될 거 같습니다. 제가 이해한 내용이 맞을까요??
그렇다면 이 방식은 더보기나 무한 스크롤처럼 offset이 항상 limit의 배수로 증가한다는 제약이 있을 때만 안전하게 사용할 수 있는 방식인지 궁금합니다.
예를 들어 클라이언트가 항상 아래처럼 요청한다고 정해져 있다면 문제가 없다고 봐도 될까요?
offset=0, limit=20
offset=20, limit=20
offset=40, limit=20
또 이런 제약이 있다면 limit을 request로 받기보다 서버에서 고정값으로 관리하는 것이 더 나은지도 궁금합니다.
마지막으로 어떤 API에서는 offset,limit을 받고 또 어떤 API에서는 page,size를 받는 경우가 있는데 실무에서는 각각 어떤 기준으로 선택하는지도 알고 싶습니다.
취준 준비하면서 제미니님의 강의 도움 많이 받고 있습니다!! 감사합니다 ^^
<정리>
PageRequest.of(offset/limit,limit) 방식은 offset이 limit의 배수일 때만 안전한 방식인가요?
더보기/ 무한 스크롤에서는 offset,limit을 사용하는 게 더 자연스러운가요??
limit이 정책적으로 정해져 있다면 request로 받지 않고 서버에서 고정하는 게 더 좋을까요?
offset/limit 방식과 page/size 방식은 어떤 기준으로 선택하면 좋을까요??
답변 0
usecase 사용 기준
1
33
2
궁금한점이 여러개 생겼습니다.
1
56
1
다양한 관점의 코드 경험을 위해 개선하지 않은 코드
1
58
1
histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/
1
50
2
SettlementTargetRepository Jquery 질문
1
49
2
부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?
1
66
2
엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??
1
71
2
제미니님 안녕하세요!
1
82
2
개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조
1
88
2
프로덕트와 프로덕트카테고리 사이의 삭제 정책
1
79
2
새로 개발한다면 구현 순서
1
141
1
의존 방향에 대한 고민
1
130
2
어드민(Back-office)에서 예약 변경 시, '할인 조건 재검증(쿠폰 회수)' vs '기존 혜택 유지' 중 어떤 정책이 일반적인가요?
1
103
2
OrderKeyGenerator 인스턴스화 generate() 질문
1
88
1
외부 API 통합 시 데이터 제어 범위 설계 질문
1
103
1
PG 결제 승인 로직
1
136
2
QnA에서 Join 필드 표현법
1
93
1
결제서비스 콜백 동시성문제 가능성
1
113
2
굿
1
113
1
도메인/엔티티 분리 상황에서 쓰기 작업 하는 방법
1
140
2
도메인 객체와 엔티티 객체 사용
1
140
2
CouponService 의존성 의문
1
103
2
상품 목록 조회 고도화 질문
1
115
2
표현 계층에서의 접근 지점이 다양해지는것과 이를 해결하기 위한 파사드의 도입에 대해 제미니님의 생각이 궁금합니다.
1
126
2





