org.springframework.transaction.support

## Class DefaultTransactionDefinition

- java.lang.Object
- - 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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `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

    Constructors
    Constructor and Description
    `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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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 which 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 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.