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
-
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
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) Return emptyExecutionContext
.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.
-
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 class:ItemStreamSupport
Return emptyExecutionContext
.- Specified by:
update
in interfaceItemStream
- Overrides:
update
in classAbstractItemCountingItemStreamItemReader<T>
- Parameters:
executionContext
- to be updated- Throws:
ItemStreamException
- See Also:
-
doClose
protected void doClose()Description copied from class:AbstractItemCountingItemStreamItemReader
Close the resources opened inAbstractItemCountingItemStreamItemReader.doOpen()
.- Specified by:
doClose
in classAbstractItemCountingItemStreamItemReader<T>
-