org.springframework.batch.item.database
Class JpaPagingItemReader<T>
java.lang.Object
org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader<T>
org.springframework.batch.item.database.AbstractPagingItemReader<T>
org.springframework.batch.item.database.JpaPagingItemReader<T>
- All Implemented Interfaces:
- ItemReader<T>, ItemStream, org.springframework.beans.factory.InitializingBean
public class JpaPagingItemReader<T>
- extends AbstractPagingItemReader<T>
ItemReader for reading database records built on top of JPA.
It executes the JPQL setQueryString(String) to retrieve requested data. The query is
executed using paged requests of a size specified in AbstractPagingItemReader.setPageSize(int). Additional pages
are requested when needed as AbstractItemCountingItemStreamItemReader.read() method is called, returning
an object corresponding to current position.
The performance of the paging depends on the JPA implementation and its use of database specific
features to limit the number of returned rows.
Setting a fairly large page size and using a commit interval that matches the page size should provide
better performance.
In order to reduce the memory usage for large results the persistence context is flushed and cleared
after each page is read. This causes any entities read to be detached. If you make changes to the
entities and want the changes persisted then you must explicitly merge the entities.
The reader must be configured with an EntityManagerFactory. All entity access
is performed within a new transaction, independent of any existing Spring managed transactions.
The implementation is *not* thread-safe.
- Since:
- 2.0
- Author:
- Thomas Risberg
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
JpaPagingItemReader
public JpaPagingItemReader()
setEntityManagerFactory
public void setEntityManagerFactory(javax.persistence.EntityManagerFactory entityManagerFactory)
setParameterValues
public void setParameterValues(java.util.Map<java.lang.String,java.lang.Object> parameterValues)
- The parameter values to be used for the query execution.
- Parameters:
parameterValues - the values keyed by the parameter named used in the query string.
afterPropertiesSet
public void afterPropertiesSet()
throws java.lang.Exception
- Description copied from class:
AbstractPagingItemReader
- Check mandatory properties.
- Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean- Overrides:
afterPropertiesSet in class AbstractPagingItemReader<T>
- Throws:
java.lang.Exception- See Also:
InitializingBean.afterPropertiesSet()
setQueryString
public void setQueryString(java.lang.String queryString)
- Parameters:
queryString - JPQL query string
doOpen
protected void doOpen()
throws java.lang.Exception
- Description copied from class:
AbstractItemCountingItemStreamItemReader
- Open resources necessary to start reading input.
- Overrides:
doOpen in class AbstractPagingItemReader<T>
- Throws:
java.lang.Exception
doReadPage
protected void doReadPage()
- Specified by:
doReadPage in class AbstractPagingItemReader<T>
doJumpToPage
protected void doJumpToPage(int itemIndex)
- Specified by:
doJumpToPage in class AbstractPagingItemReader<T>
doClose
protected void doClose()
throws java.lang.Exception
- Description copied from class:
AbstractItemCountingItemStreamItemReader
- Close the resources opened in
AbstractItemCountingItemStreamItemReader.doOpen().
- Overrides:
doClose in class AbstractPagingItemReader<T>
- Throws:
java.lang.Exception
Copyright © 2009. All Rights Reserved.