Class JpaCursorItemReader<T>
java.lang.Object
org.springframework.batch.item.ItemStreamSupport
org.springframework.batch.item.support.AbstractItemStreamItemReader<T>
org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader<T>
org.springframework.batch.item.database.JpaCursorItemReader<T>
- Type Parameters:
T
- type of items to read
- All Implemented Interfaces:
ItemReader<T>
,ItemStream
,ItemStreamReader<T>
,org.springframework.beans.factory.InitializingBean
public class JpaCursorItemReader<T>
extends AbstractItemCountingItemStreamItemReader<T>
implements org.springframework.beans.factory.InitializingBean
ItemStreamReader
implementation based on JPA
Query.getResultStream()
. It executes the JPQL query when initialized and
iterates over the result set as AbstractItemCountingItemStreamItemReader.read()
method is called, returning an object
corresponding to the current row. The query can be set directly using
setQueryString(String)
, or using a query provider via
setQueryProvider(JpaQueryProvider)
.
The implementation is not thread-safe.
- Since:
- 4.3
- Author:
- Mahmoud Ben Hassine, Jinwoo Bae
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
protected void
doClose()
Close the resources opened inAbstractItemCountingItemStreamItemReader.doOpen()
.protected void
doOpen()
Open resources necessary to start reading input.protected T
doRead()
Read next item from input.void
setEntityManagerFactory
(jakarta.persistence.EntityManagerFactory entityManagerFactory) Set the JPA entity manager factory.void
setHintValues
(Map<String, Object> hintValues) Set the query hint values for the JPA query.void
setParameterValues
(Map<String, Object> parameterValues) Set the parameter values to be used for the query execution.void
setQueryProvider
(JpaQueryProvider queryProvider) Set the JPA query provider.void
setQueryString
(String queryString) Set the JPQL query string.void
update
(ExecutionContext executionContext) Indicates that the execution context provided during open is about to be saved.Methods inherited from class org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader
close, getCurrentItemCount, isSaveState, jumpToItem, open, read, setCurrentItemCount, setMaxItemCount, setSaveState
Methods inherited from class org.springframework.batch.item.ItemStreamSupport
getExecutionContextKey, getName, setExecutionContextName, setName
-
Constructor Details
-
JpaCursorItemReader
public JpaCursorItemReader()Create a newJpaCursorItemReader
.
-
-
Method Details
-
setEntityManagerFactory
public void setEntityManagerFactory(jakarta.persistence.EntityManagerFactory entityManagerFactory) Set the JPA entity manager factory.- Parameters:
entityManagerFactory
- JPA entity manager factory
-
setQueryProvider
Set the JPA query provider.- Parameters:
queryProvider
- JPA query provider
-
setQueryString
Set the JPQL query string.- Parameters:
queryString
- JPQL query string
-
setParameterValues
Set the parameter values to be used for the query execution.- Parameters:
parameterValues
- the values keyed by parameter names used in the query string.
-
setHintValues
Set the query hint values for the JPA query. Query hints can be used to give instructions to the JPA provider.- Parameters:
hintValues
- a map where each key is the name of the hint, and the corresponding value is the hint's value.- Since:
- 5.2
-
afterPropertiesSet
- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
- Throws:
Exception
-
doOpen
Description copied from class:AbstractItemCountingItemStreamItemReader
Open resources necessary to start reading input.- Specified by:
doOpen
in classAbstractItemCountingItemStreamItemReader<T>
- Throws:
Exception
- Allows subclasses to throw checked exceptions for interpretation by the framework
-
doRead
Description copied from class:AbstractItemCountingItemStreamItemReader
Read next item from input.- Specified by:
doRead
in classAbstractItemCountingItemStreamItemReader<T>
- Returns:
- an item or
null
if the data source is exhausted
-
update
Description copied from interface:ItemStream
Indicates that the execution context provided during open is about to be saved. If any state is remaining, but has not been put in the context, it should be added here.- Specified by:
update
in interfaceItemStream
- Overrides:
update
in classAbstractItemCountingItemStreamItemReader<T>
- Parameters:
executionContext
- to be updated- Throws:
ItemStreamException
-
doClose
protected void doClose()Description copied from class:AbstractItemCountingItemStreamItemReader
Close the resources opened inAbstractItemCountingItemStreamItemReader.doOpen()
.- Specified by:
doClose
in classAbstractItemCountingItemStreamItemReader<T>
-