Spring Batch JpaCursorItemReader 도입되다.


• 스프링 배치 4.3 버전에서는 JpaCursorItemReader가 도입되었다. 이전 버전에서는 JPA 2.1 전까지 데이터 스트리밍이 가능한 스펙이 없어서 Hibernate의 상태 비저장 세션과 유사한 기능을 JPA에서 구현할 수 없었다.
• JPA 2.2에서 `Query#getResultStream()`이 도입되면서 데이터 스트리밍이 가능해졌고, 이를 스프링 배치에서 최근에 적용하여 4.3 버전부터 JpaCursorItemReader를 사용할 수 있게 되었다.
• JpaCursorItemReader는 JPA를 사용하여 데이터를 읽어오는 역할을 하며, 실행 컨텍스트 내에서 구분하기 위한 Key, JPA를 사용하기 위한 EntityManagerFactory, 사용할 JPQL 쿼리문, 조회할 최대 item 수, 조회 Item의 시작지점, 동일 Job 재실행시 실행 컨텍스트 내에서 ItemStream Support의 상태를 유지할지 여부 등을 설정할 수 있다.
• JpaPagingItemReader와 달리 JpaCursorItemReader에는 'pageSize' 설정이 없고, 'maxItemCount', 'currentItemCount'이 추가되었는데, 이는 Cursor 방식이 스트리밍이기 때문에 한 번에 몇 개의 데이터를 읽어올지를 결정하는 'pageSize'가 필요 없기 때문이다.

북마크
공유하기
신고하기