public abstract class DelegatingTransactionDefinition extends java.lang.Object implements TransactionDefinition, java.io.Serializable
TransactionDefinition implementation that delegates all calls to a given target
TransactionDefinition instance. Abstract because it is meant to be subclassed,
with subclasses overriding specific methods that are not supposed to simply delegate
to the target instance.ISOLATION_DEFAULT, ISOLATION_READ_COMMITTED, ISOLATION_READ_UNCOMMITTED, ISOLATION_REPEATABLE_READ, ISOLATION_SERIALIZABLE, PROPAGATION_MANDATORY, PROPAGATION_NESTED, PROPAGATION_NEVER, PROPAGATION_NOT_SUPPORTED, PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW, PROPAGATION_SUPPORTS, TIMEOUT_DEFAULT| Constructor and Description |
|---|
DelegatingTransactionDefinition(TransactionDefinition targetDefinition)
Create a DelegatingTransactionAttribute for the given target attribute.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(java.lang.Object obj) |
int |
getIsolationLevel()
Return the isolation level.
|
java.lang.String |
getName()
Return the name of this transaction.
|
int |
getPropagationBehavior()
Return the propagation behavior.
|
int |
getTimeout()
Return the transaction timeout.
|
int |
hashCode() |
boolean |
isReadOnly()
Return whether to optimize as a read-only transaction.
|
java.lang.String |
toString() |
public DelegatingTransactionDefinition(TransactionDefinition targetDefinition)
targetDefinition - the target TransactionAttribute to delegate topublic int getPropagationBehavior()
TransactionDefinitionMust return one of the PROPAGATION_XXX constants
defined on this interface.
getPropagationBehavior in interface TransactionDefinitionTransactionDefinition.PROPAGATION_REQUIRED,
TransactionSynchronizationManager.isActualTransactionActive()public int getIsolationLevel()
TransactionDefinitionMust return one of the ISOLATION_XXX constants defined on
this interface. Those constants are designed
to match the values of the same constants on Connection.
Exclusively designed for use with TransactionDefinition.PROPAGATION_REQUIRED or
TransactionDefinition.PROPAGATION_REQUIRES_NEW since it only applies to newly started
transactions. Consider switching the "validateExistingTransactions" flag to
"true" on your transaction manager if you'd like isolation level declarations
to get rejected when participating in an existing transaction with a different
isolation level.
Note that a transaction manager that does not support custom isolation levels
will throw an exception when given any other level than TransactionDefinition.ISOLATION_DEFAULT.
getIsolationLevel in interface TransactionDefinitionTransactionDefinition.ISOLATION_DEFAULT,
AbstractPlatformTransactionManager.setValidateExistingTransaction(boolean)public int getTimeout()
TransactionDefinitionMust return a number of seconds, or TransactionDefinition.TIMEOUT_DEFAULT.
Exclusively designed for use with TransactionDefinition.PROPAGATION_REQUIRED or
TransactionDefinition.PROPAGATION_REQUIRES_NEW since it only applies to newly started
transactions.
Note that a transaction manager that does not support timeouts will throw
an exception when given any other timeout than TransactionDefinition.TIMEOUT_DEFAULT.
getTimeout in interface TransactionDefinitionpublic boolean isReadOnly()
TransactionDefinitionThe read-only flag applies to any transaction context, whether backed
by an actual resource transaction (TransactionDefinition.PROPAGATION_REQUIRED/
TransactionDefinition.PROPAGATION_REQUIRES_NEW) or operating non-transactionally at
the resource level (TransactionDefinition.PROPAGATION_SUPPORTS). In the latter case,
the flag will only apply to managed resources within the application,
such as a Hibernate Session.
This just serves as a hint for the actual transaction subsystem; it will not necessarily cause failure of write access attempts. A transaction manager which cannot interpret the read-only hint will not throw an exception when asked for a read-only transaction.
isReadOnly in interface TransactionDefinitiontrue if the transaction is to be optimized as read-onlyTransactionSynchronization.beforeCommit(boolean),
TransactionSynchronizationManager.isCurrentTransactionReadOnly()public java.lang.String getName()
TransactionDefinitionnull.
This will be used as the transaction name to be shown in a transaction monitor, if applicable (for example, WebLogic's).
In case of Spring's declarative transactions, the exposed name will be
the fully-qualified class name + "." + method name (by default).
getName in interface TransactionDefinitionTransactionAspectSupport,
TransactionSynchronizationManager.getCurrentTransactionName()public boolean equals(java.lang.Object obj)
equals in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic java.lang.String toString()
toString in class java.lang.Object