inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

스프링 데이터 JPA 페이징과 정렬

무제한 스크롤 관련 질문 드립니다.

해결된 질문

407

Aura

작성한 질문수 5

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에서 이러한 이슈 해결해주는 기능을 지원해주는지도 궁금합니다. (없는 것 같네요 ㅠ)

날씨 추운데 건강 챙기세요.

명강의 잘 보고 있습니다.

 

 

 

 

무제한스크롤 spring JPA java spring-boot

답변 1

1

Aura

자문자답..

답은 아니고 해결 책 중 하나 인것 같습니다.

 

복합키에 seq성 데이터가 있는데 

이 데이터를 커서로 삼아서 커서 기준 seq 하위로 size만큼 데이터 뿌리는 식으로 풀었습니다.

 

정리)

page 0, size 10 고정으로 page 요청하고..

변동은 기준 seq

 

lastSeq 값 없으면 long 맥스 값 > seq 10개

조회된 데이터 중 가장 하위 seq 던져 주면 param seq 기준 하위 10개 뿌려주니까 중복 현상은 없어 졌네요..

0

김영한

스스로 잘 해결하셨습니다^^

0

Aura

보통 저렇게 해결하는 부분이 맞는지 궁금합니다. 더 좋은 방법이 있는 지도요.ㅎ

주로 웹에 뿌려주는 페이징처리를 많이 하다보니 이번엔 당황을 좀 했네요 ㅠ

1

김영한

오프셋 페이징 커서 페이징으로 검색해보시면 원하는 답을 찾으실 수 있을거에요.

감사합니다.

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

75

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

107

3

MemberRepository 구현체

0

58

1

pdf 표현 질문드립니다.

0

62

1

로그가 남지 않는 문제.

0

82

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

72

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

73

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

92

2

Sort 인터페이스는 잘 사용 안하나요?

0

52

1

스캔대상 질문드립니다.

0

46

1

하이버네이트6에서의 최적화에 이은 질문

0

86

1

save() vs saveAndFlush DB 통신 횟수

0

54

1

순수 JPA 리포지토리 코드 수정부분

0

86

2

bulk연산 후 flush하는 이유를 모르겠어요

0

152

3

bulk insert 질문입니다.

0

178

2

교만했던 것 같아요.

0

147

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

148

2

동적 테이블에 대한 질문

0

86

1

영속성 전이와 연관관계

0

131

2

강의 10:25 질문

0

74

1

단건 update 질문

0

97

2

엔티티 와 도메인의 경계

0

127

1

UsernameOnlyDto 타입 type mismatch 오류

0

121

1

Projection 개념과 데이터 전달과정에 대해 질문 있습니다.

0

136

1