org.springframework.transaction.support
Class DefaultTransactionDefinition

java.lang.Object
  extended by org.springframework.transaction.support.DefaultTransactionDefinition
All Implemented Interfaces:
Serializable, TransactionDefinition
Direct Known Subclasses:
DefaultTransactionAttribute, TransactionTemplate

public class DefaultTransactionDefinition
extends Object
implements TransactionDefinition, Serializable

Default implementation of the 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
See Also:
Serialized Form

Field Summary
static String PREFIX_ISOLATION
          Prefix for the isolation constants defined in TransactionDefinition
static String PREFIX_PROPAGATION
          Prefix for the propagation constants defined in TransactionDefinition
static String PREFIX_TIMEOUT
          Prefix for transaction timeout values in description strings
static String READ_ONLY_MARKER
          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
DefaultTransactionDefinition()
          Create a new DefaultTransactionDefinition, with default settings.
DefaultTransactionDefinition(int propagationBehavior)
          Create a new DefaultTransactionDefinition with the the given propagation behavior.
DefaultTransactionDefinition(TransactionDefinition other)
          Copy constructor.
 
Method Summary
 boolean equals(Object other)
          This implementation compares the toString() results.
protected  StringBuilder getDefinitionDescription()
          Return an identifying description for this transaction definition.
 int getIsolationLevel()
          Return the isolation level.
 String getName()
          Return the name of this transaction.
 int getPropagationBehavior()
          Return the propagation behavior.
 int getTimeout()
          Return the transaction timeout.
 int hashCode()
          This implementation returns toString()'s hash code.
 boolean isReadOnly()
          Return whether to optimize as a read-only transaction.
 void setIsolationLevel(int isolationLevel)
          Set the isolation level.
 void setIsolationLevelName(String constantName)
          Set the isolation level by the name of the corresponding constant in TransactionDefinition, e.g.
 void setName(String name)
          Set the name of this transaction.
 void setPropagationBehavior(int propagationBehavior)
          Set the propagation behavior.
 void setPropagationBehaviorName(String constantName)
          Set the propagation behavior by the name of the corresponding constant in TransactionDefinition, e.g.
 void setReadOnly(boolean readOnly)
          Set whether to optimize as read-only transaction.
 void setTimeout(int timeout)
          Set the timeout to apply, as number of seconds.
 String toString()
          Return an identifying description for this transaction definition.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

PREFIX_PROPAGATION

public static final String PREFIX_PROPAGATION
Prefix for the propagation constants defined in TransactionDefinition

See Also:
Constant Field Values

PREFIX_ISOLATION

public static final String PREFIX_ISOLATION
Prefix for the isolation constants defined in TransactionDefinition

See Also:
Constant Field Values

PREFIX_TIMEOUT

public static final String PREFIX_TIMEOUT
Prefix for transaction timeout values in description strings

See Also:
Constant Field Values

READ_ONLY_MARKER

public static final String READ_ONLY_MARKER
Marker for read-only transactions in description strings

See Also:
Constant Field Values
Constructor Detail

DefaultTransactionDefinition

public DefaultTransactionDefinition()
Create a new DefaultTransactionDefinition, with default settings. Can be modified through bean property setters.

See Also:
setPropagationBehavior(int), setIsolationLevel(int), setTimeout(int), setReadOnly(boolean), setName(java.lang.String)

DefaultTransactionDefinition

public DefaultTransactionDefinition(TransactionDefinition other)
Copy constructor. Definition can be modified through bean property setters.

See Also:
setPropagationBehavior(int), setIsolationLevel(int), setTimeout(int), setReadOnly(boolean), setName(java.lang.String)

DefaultTransactionDefinition

public DefaultTransactionDefinition(int propagationBehavior)
Create a new DefaultTransactionDefinition with the the given propagation behavior. Can be modified through bean property setters.

Parameters:
propagationBehavior - one of the propagation constants in the TransactionDefinition interface
See Also:
setIsolationLevel(int), setTimeout(int), setReadOnly(boolean)
Method Detail

setPropagationBehaviorName

public final void setPropagationBehaviorName(String constantName)
                                      throws IllegalArgumentException
Set the propagation behavior by the name of the corresponding constant in TransactionDefinition, e.g. "PROPAGATION_REQUIRED".

Parameters:
constantName - name of the constant
Throws:
IllegalArgumentException - if the supplied value is not resolvable to one of the PROPAGATION_ constants or is null
See Also:
setPropagationBehavior(int), TransactionDefinition.PROPAGATION_REQUIRED

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.

Throws:
IllegalArgumentException - if the supplied value is not one of the PROPAGATION_ constants
See Also:
TransactionDefinition.PROPAGATION_REQUIRED

getPropagationBehavior

public final int getPropagationBehavior()
Description copied from interface: TransactionDefinition
Return the propagation behavior.

Must return one of the PROPAGATION_XXX constants defined on this interface.

Specified by:
getPropagationBehavior in interface TransactionDefinition
Returns:
the propagation behavior
See Also:
TransactionDefinition.PROPAGATION_REQUIRED, TransactionSynchronizationManager.isActualTransactionActive()

setIsolationLevelName

public final void setIsolationLevelName(String constantName)
                                 throws IllegalArgumentException
Set the isolation level by the name of the corresponding constant in TransactionDefinition, e.g. "ISOLATION_DEFAULT".

Parameters:
constantName - name of the constant
Throws:
IllegalArgumentException - if the supplied value is not resolvable to one of the ISOLATION_ constants or is null
See Also:
setIsolationLevel(int), TransactionDefinition.ISOLATION_DEFAULT

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.

Throws:
IllegalArgumentException - if the supplied value is not one of the ISOLATION_ constants
See Also:
TransactionDefinition.ISOLATION_DEFAULT

getIsolationLevel

public final int getIsolationLevel()
Description copied from interface: TransactionDefinition
Return the isolation level.

Must return one of the ISOLATION_XXX constants defined on this interface.

Only makes sense in combination with TransactionDefinition.PROPAGATION_REQUIRED or TransactionDefinition.PROPAGATION_REQUIRES_NEW.

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.

Specified by:
getIsolationLevel in interface TransactionDefinition
Returns:
the isolation level

setTimeout

public final void setTimeout(int timeout)
Set the timeout to apply, as number of seconds. Default is TIMEOUT_DEFAULT (-1).

See Also:
TransactionDefinition.TIMEOUT_DEFAULT

getTimeout

public final int getTimeout()
Description copied from interface: TransactionDefinition
Return the transaction timeout.

Must return a number of seconds, or TransactionDefinition.TIMEOUT_DEFAULT.

Only makes sense in combination with TransactionDefinition.PROPAGATION_REQUIRED or TransactionDefinition.PROPAGATION_REQUIRES_NEW.

Note that a transaction manager that does not support timeouts will throw an exception when given any other timeout than TransactionDefinition.TIMEOUT_DEFAULT.

Specified by:
getTimeout in interface TransactionDefinition
Returns:
the transaction timeout

setReadOnly

public final void setReadOnly(boolean readOnly)
Set whether to optimize as read-only transaction. Default is "false".


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 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 that cannot interpret the read-only hint will not throw an exception when asked for a read-only transaction.

Specified by:
isReadOnly in interface TransactionDefinition
Returns:
true if the transaction is to be optimized as read-only
See Also:
TransactionSynchronization.beforeCommit(boolean), TransactionSynchronizationManager.isCurrentTransactionReadOnly()

setName

public final void setName(String name)
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

public final String getName()
Description copied from interface: TransactionDefinition
Return the name of this transaction. Can be null.

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 must (and will) be the fully-qualified class name + "." + method name (by default).

Specified by:
getName in interface TransactionDefinition
Returns:
the name of this transaction
See Also:
TransactionAspectSupport, TransactionSynchronizationManager.getCurrentTransactionName()

equals

public boolean equals(Object other)
This implementation compares the toString() results.

Overrides:
equals in class Object
See Also:
toString()

hashCode

public int hashCode()
This implementation returns toString()'s hash code.

Overrides:
hashCode in class Object
See Also:
toString()

toString

public String toString()
Return an identifying description for this transaction definition.

The format matches the one used by TransactionAttributeEditor, to be able to feed toString results into bean properties of type TransactionAttribute.

Has to be overridden in subclasses for correct equals and hashCode behavior. Alternatively, equals(java.lang.Object) and hashCode() can be overridden themselves.

Overrides:
toString in class Object
See Also:
getDefinitionDescription(), TransactionAttributeEditor

getDefinitionDescription

protected final StringBuilder getDefinitionDescription()
Return an identifying description for this transaction definition.

Available to subclasses, for inclusion in their toString() result.