|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.atlassian.confluence.core.persistence.hibernate.HibernateSessionManager
public class HibernateSessionManager
Provides methods to manage objects in the current Hibernate Session
. Methods will
throw IllegalStateException
if there is no active session on the executing thread.
Session
,
SessionFactoryUtils.getSession(SessionFactory, boolean)
Constructor Summary | |
---|---|
HibernateSessionManager(net.sf.hibernate.SessionFactory sessionFactory,
org.springframework.transaction.PlatformTransactionManager transactionManager)
|
Method Summary | ||
---|---|---|
void |
evict(java.lang.Object object)
Removes the object and its dependents from the active session. |
|
|
executeWithSessionClearing(java.lang.Iterable<I> input,
int batchSize,
int expectedTotal,
com.google.common.base.Function<I,O> task)
Executes a bulk database update in a way that prevents excessive memory usage, by committing the transaction and clearing the session periodically. |
|
|
executeWithSessionFlushAndClear(java.lang.Iterable<I> input,
int batchSize,
int expectedTotal,
com.google.common.base.Function<I,O> task)
Reuses the current transaction, to avoid nested transaction issues. |
|
net.sf.hibernate.Session |
getSession()
Returns the current session. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public HibernateSessionManager(net.sf.hibernate.SessionFactory sessionFactory, org.springframework.transaction.PlatformTransactionManager transactionManager)
Method Detail |
---|
public net.sf.hibernate.Session getSession()
java.lang.IllegalStateException
- if there is no active sessionpublic void evict(java.lang.Object object)
java.lang.IllegalStateException
- if there is no active session
org.springframework.dao.DataAccessException
- if there is a problem evicting the objectSession.evict(Object)
public <I,O> java.lang.Iterable<O> executeWithSessionClearing(java.lang.Iterable<I> input, int batchSize, int expectedTotal, com.google.common.base.Function<I,O> task)
task
is executed once per
input
item. The commit and session-clearing is done once per batchSize
items.
WARNING: the session clearing will discard any unflushed or uncommitted changes made higher in the stack.
Batch operations using this method should generally be done in a separate thread or otherwise outside the
scope of a request.
I
- the type of the input itemsO
- the type of the resulting items, which can be Voidinput
- the list of items to processtask
- the task to executebatchSize
- a transaction will be committed and the session will be cleared after this many input itemsexpectedTotal
- the total number of items, used for logging. A value of 0 indicates expected total is not known.
java.lang.IllegalStateException
- if there is no active session
org.springframework.dao.DataAccessException
- if there is a problem committing changes to the databasepublic <I,O> java.lang.Iterable<O> executeWithSessionFlushAndClear(java.lang.Iterable<I> input, int batchSize, int expectedTotal, com.google.common.base.Function<I,O> task)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |