The Spring Framework

org.springframework.orm.hibernate3
Class SpringSessionSynchronization

java.lang.Object
  extended by org.springframework.transaction.support.TransactionSynchronizationAdapter
      extended by org.springframework.orm.hibernate3.SpringSessionSynchronization
All Implemented Interfaces:
Ordered, TransactionSynchronization

 class SpringSessionSynchronization
extends TransactionSynchronizationAdapter
implements Ordered

Callback for resource cleanup at the end of a Spring-managed JTA transaction, that is, when participating in a JtaTransactionManager transaction.

Since:
1.2
Author:
Juergen Hoeller
See Also:
SessionFactoryUtils, JtaTransactionManager

Field Summary
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Fields inherited from interface org.springframework.transaction.support.TransactionSynchronization
STATUS_COMMITTED, STATUS_ROLLED_BACK, STATUS_UNKNOWN
 
Constructor Summary
SpringSessionSynchronization(SessionHolder sessionHolder, SessionFactory sessionFactory, SQLExceptionTranslator jdbcExceptionTranslator, boolean newSession)
           
 
Method Summary
 void afterCompletion(int status)
          Invoked after transaction commit/rollback.
 void beforeCommit(boolean readOnly)
          Invoked before transaction commit (before "beforeCompletion").
 void beforeCompletion()
          Invoked before transaction commit/rollback.
 int getOrder()
          Return the order value of this object, with a higher value meaning greater in terms of sorting.
 void resume()
          Resume this synchronization.
 void suspend()
          Suspend this synchronization.
 
Methods inherited from class org.springframework.transaction.support.TransactionSynchronizationAdapter
afterCommit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SpringSessionSynchronization

public SpringSessionSynchronization(SessionHolder sessionHolder,
                                    SessionFactory sessionFactory,
                                    SQLExceptionTranslator jdbcExceptionTranslator,
                                    boolean newSession)
Method Detail

getOrder

public int getOrder()
Description copied from interface: Ordered
Return the order value of this object, with a higher value meaning greater in terms of sorting.

Normally starting with 0 or 1, with Ordered.LOWEST_PRECEDENCE indicating greatest. Same order values will result in arbitrary positions for the affected objects.

Higher value can be interpreted as lower priority, consequently the first object has highest priority (somewhat analogous to Servlet "load-on-startup" values).

Note that order values below 0 are reserved for framework purposes. Application-specified values should always be 0 or greater, with only framework components (internal or third-party) supposed to use lower values.

Specified by:
getOrder in interface Ordered
Overrides:
getOrder in class TransactionSynchronizationAdapter
Returns:
the order value
See Also:
Ordered.LOWEST_PRECEDENCE

suspend

public void suspend()
Description copied from interface: TransactionSynchronization
Suspend this synchronization. Supposed to unbind resources from TransactionSynchronizationManager if managing any.

Specified by:
suspend in interface TransactionSynchronization
Overrides:
suspend in class TransactionSynchronizationAdapter
See Also:
TransactionSynchronizationManager.unbindResource(java.lang.Object)

resume

public void resume()
Description copied from interface: TransactionSynchronization
Resume this synchronization. Supposed to rebind resources to TransactionSynchronizationManager if managing any.

Specified by:
resume in interface TransactionSynchronization
Overrides:
resume in class TransactionSynchronizationAdapter
See Also:
TransactionSynchronizationManager.bindResource(java.lang.Object, java.lang.Object)

beforeCommit

public void beforeCommit(boolean readOnly)
                  throws DataAccessException
Description copied from interface: TransactionSynchronization
Invoked before transaction commit (before "beforeCompletion"). Can e.g. flush transactional O/R Mapping sessions to the database.

This callback does not mean that the transaction will actually be committed. A rollback decision can still occur after this method has been called. This callback is rather meant to perform work that's only relevant if a commit still has a chance to happen, such as flushing SQL statements to the database.

Note that exceptions will get propagated to the commit caller and cause a rollback of the transaction.

Specified by:
beforeCommit in interface TransactionSynchronization
Overrides:
beforeCommit in class TransactionSynchronizationAdapter
Parameters:
readOnly - whether the transaction is defined as read-only transaction
Throws:
DataAccessException
See Also:
TransactionSynchronization.beforeCompletion()

beforeCompletion

public void beforeCompletion()
Description copied from interface: TransactionSynchronization
Invoked before transaction commit/rollback. Can perform resource cleanup before transaction completion.

This method will be invoked after beforeCommit, even when beforeCommit threw an exception. This callback allows for closing resources before transaction completion, for any outcome.

Specified by:
beforeCompletion in interface TransactionSynchronization
Overrides:
beforeCompletion in class TransactionSynchronizationAdapter
See Also:
TransactionSynchronization.beforeCommit(boolean), TransactionSynchronization.afterCompletion(int)

afterCompletion

public void afterCompletion(int status)
Description copied from interface: TransactionSynchronization
Invoked after transaction commit/rollback. Can perform resource cleanup after transaction completion.

NOTE: The transaction will have been committed or rolled back already, but the transactional resources might still be active and accessible. As a consequence, any data access code triggered at this point will still "participate" in the original transaction, allowing to perform some cleanup (with no commit following anymore!), unless it explicitly declares that it needs to run in a separate transaction. Hence: Use PROPAGATION_REQUIRES_NEW for any transactional operation that is called from here.

Specified by:
afterCompletion in interface TransactionSynchronization
Overrides:
afterCompletion in class TransactionSynchronizationAdapter
Parameters:
status - completion status according to the STATUS_* constants
See Also:
TransactionSynchronization.STATUS_COMMITTED, TransactionSynchronization.STATUS_ROLLED_BACK, TransactionSynchronization.STATUS_UNKNOWN, TransactionSynchronization.beforeCompletion()

The Spring Framework

Copyright © 2002-2006 The Spring Framework.