org.springframework.batch.item.database
Class HibernatePagingItemReader<T>

java.lang.Object
  extended by org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader<T>
      extended by org.springframework.batch.item.database.AbstractPagingItemReader<T>
          extended by org.springframework.batch.item.database.HibernatePagingItemReader<T>
All Implemented Interfaces:
ItemReader<T>, ItemStream, ItemStreamReader<T>, InitializingBean

public class HibernatePagingItemReader<T>
extends AbstractPagingItemReader<T>
implements ItemStream, InitializingBean

ItemReader for reading database records built on top of Hibernate and reading only up to a fixed number of items at a time. It executes an HQL query when initialized is paged as the AbstractItemCountingItemStreamItemReader.read() method is called. The query can be set directly using setQueryString(String), a named query can be used by setQueryName(String), or a query provider strategy can be supplied via setQueryProvider(HibernateQueryProvider).

The reader can be configured to use either StatelessSession sufficient for simple mappings without the need to cascade to associated objects or standard hibernate Session for more advanced mappings or when caching is desired. When stateful session is used it will be cleared in the AbstractItemCountingItemStreamItemReader.update(ExecutionContext) method without being flushed (no data modifications are expected).

The implementation is thread-safe in between calls to AbstractItemCountingItemStreamItemReader.open(ExecutionContext), but remember to use saveState=false if used in a multi-threaded client (no restart available).

Since:
2.1
Author:
Dave Syer

Field Summary
 
Fields inherited from class org.springframework.batch.item.database.AbstractPagingItemReader
logger, results
 
Constructor Summary
HibernatePagingItemReader()
           
 
Method Summary
 void afterPropertiesSet()
          Check mandatory properties.
protected  void doClose()
          Close the resources opened in AbstractItemCountingItemStreamItemReader.doOpen().
protected  void doJumpToPage(int itemIndex)
           
protected  void doOpen()
          Open resources necessary to start reading input.
protected  void doReadPage()
           
 void setFetchSize(int fetchSize)
          Fetch size used internally by Hibernate to limit amount of data fetched from database per round trip.
 void setParameterValues(Map<String,Object> parameterValues)
          The parameter values to apply to a query (map of name:value).
 void setQueryName(String queryName)
          A query name for an externalized query.
 void setQueryProvider(HibernateQueryProvider queryProvider)
          A query provider.
 void setQueryString(String queryString)
          A query string in HQL.
 void setSessionFactory(org.hibernate.SessionFactory sessionFactory)
          The Hibernate SessionFactory to use the create a session.
 void setUseStatelessSession(boolean useStatelessSession)
          Can be set only in uninitialized state.
 
Methods inherited from class org.springframework.batch.item.database.AbstractPagingItemReader
doRead, getPage, getPageSize, jumpToItem, setPageSize
 
Methods inherited from class org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader
close, getCurrentItemCount, getExecutionContextUserSupport, isSaveState, open, read, setCurrentItemCount, setMaxItemCount, setName, setSaveState, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.springframework.batch.item.ItemStream
close, open, update
 

Constructor Detail

HibernatePagingItemReader

public HibernatePagingItemReader()
Method Detail

setParameterValues

public void setParameterValues(Map<String,Object> parameterValues)
The parameter values to apply to a query (map of name:value).

Parameters:
parameterValues - the parameter values to set

setQueryName

public void setQueryName(String queryName)
A query name for an externalized query. Either this or the { query string or the { query provider should be set.

Parameters:
queryName - name of a hibernate named query

setFetchSize

public void setFetchSize(int fetchSize)
Fetch size used internally by Hibernate to limit amount of data fetched from database per round trip.

Parameters:
fetchSize - the fetch size to pass down to Hibernate

setQueryProvider

public void setQueryProvider(HibernateQueryProvider queryProvider)
A query provider. Either this or the {query string or the {query name should be set.

Parameters:
queryProvider - Hibernate query provider

setQueryString

public void setQueryString(String queryString)
A query string in HQL. Either this or the { query provider or the { query name should be set.

Parameters:
queryString - HQL query string

setSessionFactory

public void setSessionFactory(org.hibernate.SessionFactory sessionFactory)
The Hibernate SessionFactory to use the create a session.

Parameters:
sessionFactory - the SessionFactory to set

setUseStatelessSession

public void setUseStatelessSession(boolean useStatelessSession)
Can be set only in uninitialized state.

Parameters:
useStatelessSession - true to use StatelessSession false to use standard hibernate Session

afterPropertiesSet

public void afterPropertiesSet()
                        throws Exception
Description copied from class: AbstractPagingItemReader
Check mandatory properties.

Specified by:
afterPropertiesSet in interface InitializingBean
Overrides:
afterPropertiesSet in class AbstractPagingItemReader<T>
Throws:
Exception
See Also:
InitializingBean.afterPropertiesSet()

doOpen

protected void doOpen()
               throws Exception
Description copied from class: AbstractItemCountingItemStreamItemReader
Open resources necessary to start reading input.

Overrides:
doOpen in class AbstractPagingItemReader<T>
Throws:
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 Exception
Description copied from class: AbstractItemCountingItemStreamItemReader
Close the resources opened in AbstractItemCountingItemStreamItemReader.doOpen().

Overrides:
doClose in class AbstractPagingItemReader<T>
Throws:
Exception


Copyright © 2013 SpringSource. All Rights Reserved.