개발자

Paging 관련 질문 있습니다.

2024년 06월 17일조회 36

jpa, pageable 활용하면 findall로 페이지에 속하는 데이터를 가져올 수 있다고 알고 있는데요. 1. repository 데이터가 변경돼서 예전 1페이지가 시간이 흐른 뒤 1페이지를 호출하면 다른 데이터가 나오게 돼서 데이터베이스 상태가 바뀌지 않도록 해야 된다고 GPT가 가르쳐 주는데 DATE 타입의 컬럼을 활용해서 소팅 하는 알고리즘의 경우는 어떻게 데이터베이스 상태가 바뀌지 않도록 하나요? 2. 유저1(최신순)과 유저2(추천순)가 서로 다른 알고리즘으로 Paging을 수행 할 때 Paging 객체를 유저 객체에 넣어서 기억 하나요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 06월 17일

1. DATE 타입의 컬럼을 활용해서 소팅하는 경우에 데이터베이스의 상태가 바뀌지 않으려면, 데이터를 추가하거나 수정할 때마다 해당 날짜를 기록하는 것이 중요합니다. 그렇게 하면 페이징 쿼리 실행 시점에서 날짜를 기준으로 정렬함으로써 항상 동일한 결과를 가져올 수 있습니다. 페이지네이션을 위한 쿼리는 일반적으로 `ORDER BY date_column DESC`와 같은 방식으로 작성됩니다. jpa에서는 Pageable 인터페이스 내부의 Sort 클래스를 이용하여 정렬 조건을 설정할 수 있습니다. 2. 유저1과 유저2가 서로 다른 알고리즘으로 페이징을 수행할 때, 각각의 Paging 객체 자체를 유저 객체에 넣어서 관리하기 보다는 일반적으로 요청이 들어올 때마다 PageRequest 객체(실제로는 Pageable 인터페이스)를 생성해서 처리하는 방식을 취합니다. PageRequest는 특정 페이지 번호와 한 페이지에 몇 개의 항목을 보여줄 것인지 등과 같은 정보로 구성됩니다. 그래서 특정 사용자가 요청하는 시점에서 필요한 페이지 정보와 정렬 방식(Sort 클래스를 이용)을 담아 서버에 요청을 하면 됩니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!