Class HibernatePagingItemReader<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.AbstractPagingItemReader<T>
org.springframework.batch.item.database.HibernatePagingItemReader<T>
- All Implemented Interfaces:
ItemReader<T>,ItemStream,ItemStreamReader<T>,org.springframework.beans.factory.InitializingBean
public class HibernatePagingItemReader<T>
extends AbstractPagingItemReader<T>
implements org.springframework.beans.factory.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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidCheck mandatory properties.protected voiddoClose()Close the resources opened inAbstractItemCountingItemStreamItemReader.doOpen().protected voiddoJumpToPage(int itemIndex) protected voiddoOpen()Open resources necessary to start reading input.protected voidvoidsetFetchSize(int fetchSize) Fetch size used internally by Hibernate to limit amount of data fetched from database per round trip.voidsetParameterValues(Map<String, Object> parameterValues) The parameter values to apply to a query (map of name:value).voidsetQueryName(String queryName) A query name for an externalized query.voidsetQueryProvider(HibernateQueryProvider<? extends T> queryProvider) A query provider.voidsetQueryString(String queryString) A query string in HQL.voidsetSessionFactory(org.hibernate.SessionFactory sessionFactory) The Hibernate SessionFactory to use the create a session.voidsetUseStatelessSession(boolean useStatelessSession) Can be set only in uninitialized state.Methods inherited from class org.springframework.batch.item.database.AbstractPagingItemReader
doRead, getPage, getPageSize, jumpToItem, setPageSizeMethods inherited from class org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader
close, getCurrentItemCount, isSaveState, open, read, setCurrentItemCount, setMaxItemCount, setSaveState, updateMethods inherited from class org.springframework.batch.item.ItemStreamSupport
getExecutionContextKey, setExecutionContextName, setName
-
Constructor Details
-
HibernatePagingItemReader
public HibernatePagingItemReader()
-
-
Method Details
-
setParameterValues
The parameter values to apply to a query (map of name:value).- Parameters:
parameterValues- the parameter values to set
-
setQueryName
A query name for an externalized query. Either this or the {query stringor the {query providershould 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
A query provider. Either this or the {query stringor the {query nameshould be set.- Parameters:
queryProvider- Hibernate query provider
-
setQueryString
A query string in HQL. Either this or the {query provideror the {query nameshould 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- theSessionFactoryto set
-
setUseStatelessSession
public void setUseStatelessSession(boolean useStatelessSession) Can be set only in uninitialized state.- Parameters:
useStatelessSession-trueto useStatelessSessionfalseto use standard hibernateSession
-
afterPropertiesSet
Description copied from class:AbstractPagingItemReaderCheck mandatory properties.- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Overrides:
afterPropertiesSetin classAbstractPagingItemReader<T>- Throws:
Exception- See Also:
-
InitializingBean.afterPropertiesSet()
-
doOpen
Description copied from class:AbstractItemCountingItemStreamItemReaderOpen resources necessary to start reading input.- Overrides:
doOpenin classAbstractPagingItemReader<T>- Throws:
Exception- Allows subclasses to throw checked exceptions for interpretation by the framework
-
doReadPage
protected void doReadPage()- Specified by:
doReadPagein classAbstractPagingItemReader<T>
-
doJumpToPage
protected void doJumpToPage(int itemIndex) - Specified by:
doJumpToPagein classAbstractPagingItemReader<T>
-
doClose
Description copied from class:AbstractItemCountingItemStreamItemReaderClose the resources opened inAbstractItemCountingItemStreamItemReader.doOpen().- Overrides:
doClosein classAbstractPagingItemReader<T>- Throws:
Exception- Allows subclasses to throw checked exceptions for interpretation by the framework
-