|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.transaction.support.AbstractPlatformTransactionManager
Abstract base class that allows for easy implementation of concrete platform transaction managers like JtaTransactionManager and HibernateTransactionManager.
Provides the following workflow handling:
Transaction synchronization is a generic mechanism for registering callbacks that get invoked at transaction completion time. This is mainly used internally by the data access support classes for JDBC, Hibernate, and JDO: They register resources that are opened within the transaction for closing at transaction completion time, allowing e.g. for reuse of the same Hibernate Session within the transaction. The same mechanism can also be used for custom synchronization efforts.
The state of this class is serializable. It's up to subclasses if they wish to make their state to be serializable. They should implement readObject() methods if they need to restore any transient state.
setTransactionSynchronization(int)
,
TransactionSynchronizationManager
,
JtaTransactionManager
,
HibernateTransactionManager
,
Serialized FormField Summary | |
protected Log |
logger
Transient to optimize serialization |
static int |
SYNCHRONIZATION_ALWAYS
Always activate transaction synchronization, even for "empty" transactions that result from PROPAGATION_SUPPORTS with no existing backend transaction. |
static int |
SYNCHRONIZATION_NEVER
Never active transaction synchronization. |
static int |
SYNCHRONIZATION_ON_ACTUAL_TRANSACTION
Activate transaction synchronization only for actual transactions, i.e. not for empty ones that result from PROPAGATION_SUPPORTS with no existing backend transaction. |
Constructor Summary | |
AbstractPlatformTransactionManager()
|
Method Summary | |
void |
commit(TransactionStatus status)
This implementation of commit handles participating in existing transactions and programmatic rollback requests. |
protected abstract void |
doBegin(Object transaction,
TransactionDefinition definition)
Begin a new transaction with the given transaction definition. |
protected void |
doCleanupAfterCompletion(Object transaction)
Cleanup resources after transaction completion. |
protected abstract void |
doCommit(DefaultTransactionStatus status)
Perform an actual commit on the given transaction. |
protected abstract Object |
doGetTransaction()
Return a current transaction object, i.e. a JTA UserTransaction. |
protected abstract void |
doResume(Object transaction,
Object suspendedResources)
Resume the resources of the current transaction. |
protected abstract void |
doRollback(DefaultTransactionStatus status)
Perform an actual rollback on the given transaction. |
protected abstract void |
doSetRollbackOnly(DefaultTransactionStatus status)
Set the given transaction rollback-only. |
protected abstract Object |
doSuspend(Object transaction)
Suspend the resources of the current transaction. |
TransactionStatus |
getTransaction(TransactionDefinition definition)
This implementation of getTransaction handles propagation behavior. |
int |
getTransactionSynchronization()
Return if this transaction manager should activate the thread-bound transaction synchronization support. |
protected abstract boolean |
isExistingTransaction(Object transaction)
Check if the given transaction object indicates an existing, i.e. already begun, transaction. |
boolean |
isNestedTransactionAllowed()
Return whether nested transactions are allowed. |
boolean |
isRollbackOnCommitFailure()
Return if a rollback should be performed on failure of the commit call. |
void |
rollback(TransactionStatus status)
This implementation of rollback handles participating in existing transactions. |
void |
setNestedTransactionAllowed(boolean nestedTransactionAllowed)
Set whether nested transactions are allowed. |
void |
setRollbackOnCommitFailure(boolean rollbackOnCommitFailure)
Set if doRollback should be performed on failure of the doCommit call. |
void |
setTransactionSynchronization(int transactionSynchronization)
Set when this transaction manager should activate the thread-bound transaction synchronization support. |
void |
setTransactionSynchronizationName(String constantName)
Set the transaction synchronization by the name of the corresponding constant in this class, e.g. |
protected boolean |
useSavepointForNestedTransaction()
Return whether to use a savepoint for a nested transaction. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final int SYNCHRONIZATION_ALWAYS
public static final int SYNCHRONIZATION_ON_ACTUAL_TRANSACTION
public static final int SYNCHRONIZATION_NEVER
protected transient Log logger
Constructor Detail |
public AbstractPlatformTransactionManager()
Method Detail |
public void setTransactionSynchronizationName(String constantName)
constantName
- name of the constantSYNCHRONIZATION_ALWAYS
public void setTransactionSynchronization(int transactionSynchronization)
Note that transaction synchronization isn't supported for multiple concurrent transactions by different transaction managers. Only one transaction manager is allowed to activate it at any time.
SYNCHRONIZATION_ALWAYS
,
SYNCHRONIZATION_ON_ACTUAL_TRANSACTION
,
SYNCHRONIZATION_NEVER
,
TransactionSynchronizationManager
,
TransactionSynchronization
public int getTransactionSynchronization()
public void setNestedTransactionAllowed(boolean nestedTransactionAllowed)
Typically initialized with an appropriate default by the concrete transaction manager subclass.
public boolean isNestedTransactionAllowed()
public void setRollbackOnCommitFailure(boolean rollbackOnCommitFailure)
doCommit(org.springframework.transaction.support.DefaultTransactionStatus)
,
doRollback(org.springframework.transaction.support.DefaultTransactionStatus)
public boolean isRollbackOnCommitFailure()
public final TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException
getTransaction
in interface PlatformTransactionManager
definition
- TransactionDefinition instance (can be null for defaults),
describing propagation behavior, isolation level, timeout etc.
TransactionException
- in case of lookup, creation, or system errorsdoGetTransaction()
,
isExistingTransaction(java.lang.Object)
,
doBegin(java.lang.Object, org.springframework.transaction.TransactionDefinition)
public final void commit(TransactionStatus status) throws TransactionException
commit
in interface PlatformTransactionManager
status
- object returned by the getTransaction() method.
TransactionException
- in case of commit or system errorsTransactionStatus.isRollbackOnly()
,
doCommit(org.springframework.transaction.support.DefaultTransactionStatus)
,
rollback(org.springframework.transaction.TransactionStatus)
public final void rollback(TransactionStatus status) throws TransactionException
rollback
in interface PlatformTransactionManager
status
- object returned by the getTransaction() method.
TransactionException
- in case of system errorsdoRollback(org.springframework.transaction.support.DefaultTransactionStatus)
,
doSetRollbackOnly(org.springframework.transaction.support.DefaultTransactionStatus)
protected abstract Object doGetTransaction() throws TransactionException
CannotCreateTransactionException
- if transaction support is not available (e.g. no JTA UserTransaction retrievable from JNDI)
TransactionException
- in case of lookup or system errorsprotected abstract boolean isExistingTransaction(Object transaction) throws TransactionException
transaction
- transaction object returned by doGetTransaction
TransactionException
- in case of system errorsprotected boolean useSavepointForNestedTransaction()
Subclasses can override this to return false, causing a further invocation of doBegin despite an already existing transaction.
DefaultTransactionStatus.createAndHoldSavepoint()
,
DefaultTransactionStatus.rollbackToHeldSavepoint()
,
DefaultTransactionStatus.releaseHeldSavepoint()
,
doBegin(java.lang.Object, org.springframework.transaction.TransactionDefinition)
protected abstract void doBegin(Object transaction, TransactionDefinition definition) throws TransactionException
transaction
- transaction object returned by doGetTransactiondefinition
- TransactionDefinition instance, describing
propagation behavior, isolation level, timeout etc.
TransactionException
- in case of creation or system errorsprotected abstract Object doSuspend(Object transaction) throws TransactionException
transaction
- transaction object returned by doGetTransaction
IllegalTransactionStateException
- if suspending is not supported by the transaction manager implementation
TransactionException
- in case of system errorsdoResume(java.lang.Object, java.lang.Object)
protected abstract void doResume(Object transaction, Object suspendedResources) throws TransactionException
transaction
- transaction object returned by doGetTransactionsuspendedResources
- the object that holds suspended resources,
as returned by doSuspend
IllegalTransactionStateException
- if resuming is not supported by the transaction manager implementation
TransactionException
- in case of system errorsdoSuspend(java.lang.Object)
protected abstract void doCommit(DefaultTransactionStatus status) throws TransactionException
status
- status representation of the transaction
TransactionException
- in case of commit or system errorsprotected abstract void doRollback(DefaultTransactionStatus status) throws TransactionException
status
- status representation of the transaction
TransactionException
- in case of system errorsprotected abstract void doSetRollbackOnly(DefaultTransactionStatus status) throws TransactionException
status
- status representation of the transaction
TransactionException
- in case of system errorsprotected void doCleanupAfterCompletion(Object transaction)
Default implementation does nothing.
transaction
- transaction object returned by doGetTransaction
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |