org.springframework.transaction.support

## Class DefaultTransactionStatus

- java.lang.Object
- - org.springframework.transaction.support.AbstractTransactionStatus
  - - org.springframework.transaction.support.DefaultTransactionStatus

- All Implemented Interfaces:
    Flushable, SavepointManager, TransactionStatus

      public class DefaultTransactionStatus
      extends AbstractTransactionStatus

  Default implementation of the `TransactionStatus` interface, used by `AbstractPlatformTransactionManager`. Based on the concept of an underlying "transaction object".

  Holds all status information that `AbstractPlatformTransactionManager` needs internally, including a generic transaction object determined by the concrete transaction manager implementation.

  Supports delegating savepoint-related methods to a transaction object that implements the `SavepointManager` interface.

  NOTE: This is not intended for use with other PlatformTransactionManager implementations, in particular not for mock transaction managers in testing environments. Use the alternative `SimpleTransactionStatus` class or a mock for the plain `TransactionStatus` interface instead.

  Since:
    19.01.2004
  Author:
    Juergen Hoeller
  See Also:
    `AbstractPlatformTransactionManager`, `SavepointManager`, `getTransaction()`, `AbstractTransactionStatus.createSavepoint()`, `AbstractTransactionStatus.rollbackToSavepoint(java.lang.Object)`, `AbstractTransactionStatus.releaseSavepoint(java.lang.Object)`, `SimpleTransactionStatus`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultTransactionStatus(Object transaction, boolean newTransaction, boolean newSynchronization, boolean readOnly, boolean debug, Object suspendedResources)` Create a new DefaultTransactionStatus instance.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `flush()` Delegate the flushing to the transaction object, provided that the latter implements the `SmartTransactionObject` interface.
    `protected SavepointManager` | `getSavepointManager()` This implementation exposes the SavepointManager interface of the underlying transaction object, if any.
    `Object` | `getSuspendedResources()` Return the holder for resources that have been suspended for this transaction, if any.
    `Object` | `getTransaction()` Return the underlying transaction object.
    `boolean` | `hasTransaction()` Return whether there is an actual transaction active.
    `boolean` | `isDebug()` Return whether the progress of this transaction is debugged.
    `boolean` | `isGlobalRollbackOnly()` Determine the rollback-only flag via checking both the transaction object, provided that the latter implements the `SmartTransactionObject` interface.
    `boolean` | `isNewSynchronization()` Return if a new transaction synchronization has been opened for this transaction.
    `boolean` | `isNewTransaction()` Return whether the present transaction is new (else participating in an existing transaction, or potentially not running in an actual transaction in the first place).
    `boolean` | `isReadOnly()` Return if this transaction is defined as read-only transaction.
    `boolean` | `isTransactionSavepointManager()` Return whether the underlying transaction implements the SavepointManager interface.

    - ### Methods inherited from class org.springframework.transaction.support.AbstractTransactionStatus

      `createAndHoldSavepoint, createSavepoint, getSavepoint, hasSavepoint, isCompleted, isLocalRollbackOnly, isRollbackOnly, releaseHeldSavepoint, releaseSavepoint, rollbackToHeldSavepoint, rollbackToSavepoint, setCompleted, setRollbackOnly, setSavepoint`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DefaultTransactionStatus

          public DefaultTransactionStatus(Object transaction,
                                          boolean newTransaction,
                                          boolean newSynchronization,
                                          boolean readOnly,
                                          boolean debug,
                                          Object suspendedResources)

      Create a new DefaultTransactionStatus instance.
      Parameters:
        `transaction` - underlying transaction object that can hold state for the internal transaction implementation
        `newTransaction` - if the transaction is new, else participating in an existing transaction
        `newSynchronization` - if a new transaction synchronization has been opened for the given transaction
        `readOnly` - whether the transaction is read-only
        `debug` - should debug logging be enabled for the handling of this transaction? Caching it in here can prevent repeated calls to ask the logging system whether debug logging should be enabled.
        `suspendedResources` - a holder for resources that have been suspended for this transaction, if any

  - ### Method Detail

    - #### getTransaction

          public Object getTransaction()

      Return the underlying transaction object.

    - #### hasTransaction

          public boolean hasTransaction()

      Return whether there is an actual transaction active.

    - #### isNewTransaction

          public boolean isNewTransaction()

      Description copied from interface: `TransactionStatus`
      Return whether the present transaction is new (else participating in an existing transaction, or potentially not running in an actual transaction in the first place).

    - #### isNewSynchronization

          public boolean isNewSynchronization()

      Return if a new transaction synchronization has been opened for this transaction.

    - #### isReadOnly

          public boolean isReadOnly()

      Return if this transaction is defined as read-only transaction.

    - #### isDebug

          public boolean isDebug()

      Return whether the progress of this transaction is debugged. This is used by AbstractPlatformTransactionManager as an optimization, to prevent repeated calls to logger.isDebug(). Not really intended for client code.

    - #### getSuspendedResources

          public Object getSuspendedResources()

      Return the holder for resources that have been suspended for this transaction, if any.

    - #### isGlobalRollbackOnly

          public boolean isGlobalRollbackOnly()

      Determine the rollback-only flag via checking both the transaction object, provided that the latter implements the `SmartTransactionObject` interface.

      Will return "true" if the transaction itself has been marked rollback-only by the transaction coordinator, for example in case of a timeout.

      Overrides:
        `isGlobalRollbackOnly` in class `AbstractTransactionStatus`
      See Also:
        `SmartTransactionObject.isRollbackOnly()`

    - #### flush

          public void flush()

      Delegate the flushing to the transaction object, provided that the latter implements the `SmartTransactionObject` interface.
      Specified by:
        `flush` in interface `Flushable`
      Specified by:
        `flush` in interface `TransactionStatus`
      Overrides:
        `flush` in class `AbstractTransactionStatus`

    - #### getSavepointManager

          protected SavepointManager getSavepointManager()

      This implementation exposes the SavepointManager interface of the underlying transaction object, if any.
      Overrides:
        `getSavepointManager` in class `AbstractTransactionStatus`

    - #### isTransactionSavepointManager

          public boolean isTransactionSavepointManager()

      Return whether the underlying transaction implements the SavepointManager interface.
      See Also:
        `getTransaction()`, `SavepointManager`