해결된 질문
작성
·
349
2
타임라인 형태 조회 API를 제공 하려다가
중복에 관한 문제에 직면하여 조언을 얻고 자 합니다.
데이터가 로드 된 후.
신규 데이터가 등록 / 삭제 등 프로세스가 일어 난 다음에
다음 페이지를 호출 할 때 생기는 이슈 입니다.
pageRequest, slice로 구현 시
신규 데이터가 입력 된 경우 중복으로 데이터가 보이는 케이스가 생기고, 삭제 된 경우 예상치 못하게 데이터가 빠지는 현상이 있습니다.
ex)
주어진 데이터 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
size 5
1페이지에 10, 9, 8, 7, 6 이 뿌려 진 상태
조회 된 상태에서 신규 데이터 12, 11 이 추가 됩니다.
이 상태에서 2페이지를 호출 합니다.
-> db에서는 12~8까지를 1페이지 7~3까지를 2페이지로 판단하여 7, 6, 5, 4, 3 을 더보기로 뿌려주며
7, 6 번이 중복으로 리스트에 보이게 되고 있습니다.
이 강의는 들은지 4개월이 넘었는데 모바일 더보기 관한 내용을 말씀하셨던 것 같아서 오늘 다시 들어봤지만 Slice의 내용 이었고 제가 직면한 이슈는 아직 해결 되지 않았네요.
조사를 좀 해보니.
오라클의 rownum 같은..? 성격의 데이터로 어디까지 데이터를 불러 왔는지에 대한 값등으로 해결 한다고 찾긴 했는데요. 그 방향으로 native쿼리로 해결을 해볼까 고민하다가 영한님/배민에서는 어떻게 처리 할까 궁금해서 질문을 남깁니다.
제가 못 찾는건지 jpa에서 이러한 이슈 해결해주는 기능을 지원해주는지도 궁금합니다. (없는 것 같네요 ㅠ)
날씨 추운데 건강 챙기세요.
명강의 잘 보고 있습니다.
답변 1
1
자문자답..
답은 아니고 해결 책 중 하나 인것 같습니다.
복합키에 seq성 데이터가 있는데
이 데이터를 커서로 삼아서 커서 기준 seq 하위로 size만큼 데이터 뿌리는 식으로 풀었습니다.
정리)
page 0, size 10 고정으로 page 요청하고..
변동은 기준 seq
lastSeq 값 없으면 long 맥스 값 > seq 10개
조회된 데이터 중 가장 하위 seq 던져 주면 param seq 기준 하위 10개 뿌려주니까 중복 현상은 없어 졌네요..
스스로 잘 해결하셨습니다^^