inflearn logo
강의

講義

知識共有

死のSpring Batch:午前3時の凄惨な恐怖はもう終わりだ。

3章。作戦1:リレーショナルデータベースの読み書き(テーブルの心臓部に処刑場を築く ☠️)

JpaPagingItemReader는 좋은게 없는거야..??

1

moonyechan971698

投稿した質問数 18

0

형이 이 강의에서 말하는거보면 여러 방면으로 JpaPagingItemReader에 안 좋은점에 대해서만 말하는거 같애

(실시간으로 데이터 추가/삭제로 인한 데이터 누락/중복의 가능성, 페이지별로 트랜잭션 커밋, 플러시 하는 동작으로 인한 사이드 이펙트, 오프셋 기반의 페이징에 의한 성능저하 등등)


그럼 JpaPagingItemReader는 JpaCursorItemReader와 비교하면 쓸 이유가 없는 놈인거야..??

지피티 말로는 JpaPagingItemReader가 스레드 세이프한 점, 그리고 커서를 장기간 유지하는 것에 대한 부담이 없다는 점에서 더 나은점도 있다고 하는데 이건 와닿지가 않고 잘 모르겟어

java spring spring-boot spring-batch backend

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

문예찬님, JpaPagingItemReader가 단점만 있는 것은 아닙니다. 다만 어떤 데이터와 실행 환경을 처리하느냐에 따라 JpaCursorItemReader와 비교해 선택해야 합니다.

JpaPagingItemReader는 데이터를 페이지 단위로 가져오므로, 커서 방식처럼 장시간 커서를 유지하는 상황을 피하고 싶을 때 고려할 수 있습니다. 반면 오프셋 페이징은 데이터가 처리 중 변경되면 누락·중복 문제가 생길 수 있고, 페이지를 반복해서 조회하는 비용도 고려해야 합니다. 따라서 “항상 더 낫다”기보다는 커서 유지 부담과 페이징의 비용·데이터 변경 위험을 비교해 선택하는 방식이 적절합니다.

강의 지식공유자님의 기존 답변에서는 JpaCursorItemReader가 실무에서 자주 사용되며, 메모리 부족 여부는 구현체와 데이터의 양·크기에 따라 달라진다고 설명합니다. 또 JpaPagingItemReader는 대용량 데이터에 무조건 권장되는 선택은 아니므로, 사용한다면 데이터 규모를 고려해 페이지 크기를 정해야 한다고 안내합니다.

요약하면, JpaPagingItemReader도 페이지 단위로 데이터를 읽고 커서를 장기간 유지하지 않는 선택지가 될 수 있지만, 대용량 처리나 변경 중인 데이터셋에는 주의가 필요합니다. 두 리더 중 어느 쪽이 적합한지는 데이터 규모, 처리 중 데이터 변경 여부, 재시작 요구사항 등을 함께 보고 결정하는 것이 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

isInterrupted 질문 있다.

0

40

1

RunIdIncrementer batch 5랑 6랑

1

71

2

강의 자료를 받아볼 순 없겠나

1

89

2

PlatformTransactionManager, ResourcelessTransactionManager 질문

1

119

2

형 책 어떻게 받아?

1

141

1

JpaCursorItemReader의 정렬 조건 부재의 영향

1

113

2

"컴파일 시점에 없는 값을 어떻게 참조할 것인가?" 섹션

1

118

2

형 이번에 낸 책이랑 강의 내용에 차이가 있어?

2

164

1

형 나 몰래 책내면 모를 줄 알고?

2

150

2

강의 중복 확인 요청

1

79

1

중복내용 제보?!

1

135

2

Json 요청 처리

1

126

2

[건의][6장][작전1] deprecated 메소드

1

140

2

[예제][3장][작전2] windows 에서 마지막 예제

1

131

2

[오타][3장][작전1] 형 이건 빨리 해줘

2

235

2

[오타] "리스너 활용: 시스템 완전 장악 매뉴얼" 부분

1

112

1

[오타] "JobScope와 StepScope 사용 시 주의사항" 부분

1

130

2

spring boot 4 + spring batch 6 설정 변경?

1

265

2

Batch 패키지 설계 — 실무에서 Job 단위 구조

1

199

2

Spring batch를 실행해줄 스케줄러와 batch 실행 환경

1

153

1

메타테이블에 데이터가 생기지 않는 이유

1

210

2

Spring Batch 4.3.10 ExecutionContext 한글 인코딩 이슈 관련 문의

1

202

2

@StepScope 또는 @JobScope와 JobOperator

1

237

5

Remote Partitioning

1

152

2