Class DefaultTransactionDefinition
- All Implemented Interfaces:
Serializable
,TransactionDefinition
- Direct Known Subclasses:
DefaultTransactionAttribute
,TransactionTemplate
TransactionDefinition
interface,
offering bean-style configuration and sensible default values
(PROPAGATION_REQUIRED, ISOLATION_DEFAULT, TIMEOUT_DEFAULT, readOnly=false).
Base class for both TransactionTemplate
and
DefaultTransactionAttribute
.
- Since:
- 08.05.2003
- Author:
- Juergen Hoeller, Sam Brannen
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Prefix for the isolation constants defined in TransactionDefinition.static final String
Prefix for the propagation constants defined in TransactionDefinition.static final String
Prefix for transaction timeout values in description strings.static final String
Marker for read-only transactions in description strings.Fields inherited from interface org.springframework.transaction.TransactionDefinition
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 Summary
ConstructorDescriptionCreate a new DefaultTransactionDefinition, with default settings.DefaultTransactionDefinition
(int propagationBehavior) Create a new DefaultTransactionDefinition with the given propagation behavior.Copy constructor. -
Method Summary
Modifier and TypeMethodDescriptionboolean
This implementation compares thetoString()
results.protected final StringBuilder
Return an identifying description for this transaction definition.final int
Return the isolation level.final String
getName()
Return the name of this transaction.final int
Return the propagation behavior.final int
Return the transaction timeout.int
hashCode()
This implementation returnstoString()
's hash code.final boolean
Return whether to optimize as a read-only transaction.final void
setIsolationLevel
(int isolationLevel) Set the isolation level.final void
setIsolationLevelName
(String constantName) Set the isolation level by the name of the corresponding constant inTransactionDefinition
— for example,"ISOLATION_DEFAULT"
.final void
Set the name of this transaction.final void
setPropagationBehavior
(int propagationBehavior) Set the propagation behavior.final void
setPropagationBehaviorName
(String constantName) Set the propagation behavior by the name of the corresponding constant inTransactionDefinition
— for example,"PROPAGATION_REQUIRED"
.final void
setReadOnly
(boolean readOnly) Set whether to optimize as read-only transaction.final void
setTimeout
(int timeout) Set the timeout to apply, as number of seconds.toString()
Return an identifying description for this transaction definition.
-
Field Details
-
PREFIX_PROPAGATION
Prefix for the propagation constants defined in TransactionDefinition.- See Also:
-
PREFIX_ISOLATION
Prefix for the isolation constants defined in TransactionDefinition.- See Also:
-
PREFIX_TIMEOUT
Prefix for transaction timeout values in description strings.- See Also:
-
READ_ONLY_MARKER
Marker for read-only transactions in description strings.- See Also:
-
-
Constructor Details
-
DefaultTransactionDefinition
public DefaultTransactionDefinition()Create a new DefaultTransactionDefinition, with default settings. Can be modified through bean property setters. -
DefaultTransactionDefinition
Copy constructor. Definition can be modified through bean property setters. -
DefaultTransactionDefinition
public DefaultTransactionDefinition(int propagationBehavior) Create a new DefaultTransactionDefinition with the given propagation behavior. Can be modified through bean property setters.- Parameters:
propagationBehavior
- one of the propagation constants in the TransactionDefinition interface- See Also:
-
-
Method Details
-
setPropagationBehaviorName
Set the propagation behavior by the name of the corresponding constant inTransactionDefinition
— for example,"PROPAGATION_REQUIRED"
.- Parameters:
constantName
- name of the constant- Throws:
IllegalArgumentException
- if the supplied value is not resolvable to one of thePROPAGATION_
constants or isnull
- See Also:
-
setPropagationBehavior
public final void setPropagationBehavior(int propagationBehavior) Set the propagation behavior. Must be one of the propagation constants in the TransactionDefinition interface. Default is PROPAGATION_REQUIRED.Exclusively designed for use with
TransactionDefinition.PROPAGATION_REQUIRED
orTransactionDefinition.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
.- Throws:
IllegalArgumentException
- if the supplied value is not one of thePROPAGATION_
constants- See Also:
-
getPropagationBehavior
public final int getPropagationBehavior()Description copied from interface:TransactionDefinition
Return the propagation behavior.Must return one of the
PROPAGATION_XXX
constants defined onthis interface
.The default is
TransactionDefinition.PROPAGATION_REQUIRED
.- Specified by:
getPropagationBehavior
in interfaceTransactionDefinition
- Returns:
- the propagation behavior
- See Also:
-
setIsolationLevelName
Set the isolation level by the name of the corresponding constant inTransactionDefinition
— for example,"ISOLATION_DEFAULT"
.- Parameters:
constantName
- name of the constant- Throws:
IllegalArgumentException
- if the supplied value is not resolvable to one of theISOLATION_
constants or isnull
- See Also:
-
setIsolationLevel
public final void setIsolationLevel(int isolationLevel) Set the isolation level. Must be one of the isolation constants in the TransactionDefinition interface. Default is ISOLATION_DEFAULT.Exclusively designed for use with
TransactionDefinition.PROPAGATION_REQUIRED
orTransactionDefinition.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
.- Throws:
IllegalArgumentException
- if the supplied value is not one of theISOLATION_
constants- See Also:
-
getIsolationLevel
public final int getIsolationLevel()Description copied from interface:TransactionDefinition
Return the isolation level.Must return one of the
ISOLATION_XXX
constants defined onthis interface
. Those constants are designed to match the values of the same constants onConnection
.Exclusively designed for use with
TransactionDefinition.PROPAGATION_REQUIRED
orTransactionDefinition.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.The default is
TransactionDefinition.ISOLATION_DEFAULT
. Note that a transaction manager that does not support custom isolation levels will throw an exception when given any other level thanTransactionDefinition.ISOLATION_DEFAULT
.- Specified by:
getIsolationLevel
in interfaceTransactionDefinition
- Returns:
- the isolation level
- See Also:
-
setTimeout
public final void setTimeout(int timeout) Set the timeout to apply, as number of seconds. Default is TIMEOUT_DEFAULT (-1).Exclusively designed for use with
TransactionDefinition.PROPAGATION_REQUIRED
orTransactionDefinition.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
.- See Also:
-
getTimeout
public final int getTimeout()Description copied from interface:TransactionDefinition
Return the transaction timeout.Must return a number of seconds, or
TransactionDefinition.TIMEOUT_DEFAULT
.Exclusively designed for use with
TransactionDefinition.PROPAGATION_REQUIRED
orTransactionDefinition.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
.The default is
TransactionDefinition.TIMEOUT_DEFAULT
.- Specified by:
getTimeout
in interfaceTransactionDefinition
- Returns:
- the transaction timeout
-
setReadOnly
public final void setReadOnly(boolean readOnly) Set whether to optimize as read-only transaction. Default is "false".The 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 HibernateSession
.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
public final boolean isReadOnly()Description copied from interface:TransactionDefinition
Return whether to optimize as a read-only transaction.The 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 HibernateSession
.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.
- Specified by:
isReadOnly
in interfaceTransactionDefinition
- Returns:
true
if the transaction is to be optimized as read-only (false
by default)- See Also:
-
setName
Set the name of this transaction. Default is none.This will be used as transaction name to be shown in a transaction monitor, if applicable (for example, WebLogic's).
-
getName
Description copied from interface:TransactionDefinition
Return the name of this transaction. Can benull
.This will be used as the transaction name to be shown in a transaction monitor, if applicable.
In case of Spring's declarative transactions, the exposed name will be the
fully-qualified class name + "." + method name
(by default).- Specified by:
getName
in interfaceTransactionDefinition
- Returns:
- the name of this transaction (
null
by default} - See Also:
-
equals
This implementation compares thetoString()
results. -
hashCode
public int hashCode()This implementation returnstoString()
's hash code. -
toString
Return an identifying description for this transaction definition.The format matches the one used by
TransactionAttributeEditor
, to be able to feedtoString
results into bean properties of typeTransactionAttribute
.Has to be overridden in subclasses for correct
equals
andhashCode
behavior. Alternatively,equals(java.lang.Object)
andhashCode()
can be overridden themselves. -
getDefinitionDescription
Return an identifying description for this transaction definition.Available to subclasses, for inclusion in their
toString()
result.
-