Class DefaultTransactionStatus
- All Implemented Interfaces:
Flushable
,SavepointManager
,TransactionExecution
,TransactionStatus
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:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
flush()
Delegate the flushing to the transaction object, provided that the latter implements theSmartTransactionObject
interface.protected SavepointManager
This implementation exposes theSavepointManager
interface of the underlying transaction object, if any.Return the holder for resources that have been suspended for this transaction, if any.Return the underlying transaction object.Return the defined name of the transaction (possibly an empty String).boolean
Return whether there is an actual transaction active: this is meant to cover a new transaction as well as participation in an existing transaction, only returningfalse
when not running in an actual transaction at all.boolean
isDebug()
Return whether the progress of this transaction is debugged.boolean
Determine the rollback-only flag via checking the transaction object, provided that the latter implements theSmartTransactionObject
interface.boolean
isNested()
Return if this transaction executes in a nested fashion within another.boolean
Return if a new transaction synchronization has been opened for this transaction.boolean
Return whether the transaction manager considers the present transaction as new; otherwise participating in an existing transaction, or potentially not running in an actual transaction in the first place.boolean
Return if this transaction is defined as read-only transaction.boolean
Return whether the underlying transaction implements theSavepointManager
interface and therefore supports savepoints.Methods inherited from class org.springframework.transaction.support.AbstractTransactionStatus
createAndHoldSavepoint, createSavepoint, getSavepoint, hasSavepoint, isCompleted, isLocalRollbackOnly, isRollbackOnly, releaseHeldSavepoint, releaseSavepoint, rollbackToHeldSavepoint, rollbackToSavepoint, setCompleted, setRollbackOnly, setSavepoint
-
Constructor Details
-
DefaultTransactionStatus
public DefaultTransactionStatus(@Nullable String transactionName, @Nullable Object transaction, boolean newTransaction, boolean newSynchronization, boolean nested, boolean readOnly, boolean debug, @Nullable Object suspendedResources) Create a newDefaultTransactionStatus
instance.- Parameters:
transactionName
- the defined name of the transactiontransaction
- underlying transaction object that can hold state for the internal transaction implementationnewTransaction
- if the transaction is new, otherwise participating in an existing transactionnewSynchronization
- if a new transaction synchronization has been opened for the given transactionreadOnly
- whether the transaction is marked as read-onlydebug
- 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- Since:
- 6.1
-
-
Method Details
-
getTransactionName
Description copied from interface:TransactionExecution
Return the defined name of the transaction (possibly an empty String).In case of Spring's declarative transactions, the exposed name will be the
fully-qualified class name + "." + method name
(by default).The default implementation returns an empty String.
- See Also:
-
getTransaction
Return the underlying transaction object.- Throws:
IllegalStateException
- if no transaction is active
-
hasTransaction
public boolean hasTransaction()Description copied from interface:TransactionExecution
Return whether there is an actual transaction active: this is meant to cover a new transaction as well as participation in an existing transaction, only returningfalse
when not running in an actual transaction at all.The default implementation returns
true
. -
isNewTransaction
public boolean isNewTransaction()Description copied from interface:TransactionExecution
Return whether the transaction manager considers the present transaction as new; otherwise participating in an existing transaction, or potentially not running in an actual transaction in the first place.This is primarily here for transaction manager state handling. Prefer the use of
TransactionExecution.hasTransaction()
for application purposes since this is usually semantically appropriate.The "new" status can be transaction manager specific, for example, returning
true
for an actual nested transaction but potentiallyfalse
for a savepoint-based nested transaction scope if the savepoint management is explicitly exposed (such as onTransactionStatus
). A combined check for any kind of nested execution is provided byTransactionExecution.isNested()
.The default implementation returns
true
. -
isNewSynchronization
public boolean isNewSynchronization()Return if a new transaction synchronization has been opened for this transaction. -
isNested
public boolean isNested()Description copied from interface:TransactionExecution
Return if this transaction executes in a nested fashion within another.The default implementation returns
false
. -
isReadOnly
public boolean isReadOnly()Description copied from interface:TransactionExecution
Return if this transaction is defined as read-only transaction.The default implementation returns
false
.- See Also:
-
isDebug
public boolean isDebug()Return whether the progress of this transaction is debugged. This is used byAbstractPlatformTransactionManager
as an optimization, to prevent repeated calls tologger.isDebugEnabled()
. Not really intended for client code. -
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 the transaction object, provided that the latter implements theSmartTransactionObject
interface.Will return
true
if the global transaction itself has been marked rollback-only by the transaction coordinator, for example in case of a timeout.- Overrides:
isGlobalRollbackOnly
in classAbstractTransactionStatus
- See Also:
-
getSavepointManager
This implementation exposes theSavepointManager
interface of the underlying transaction object, if any.- Overrides:
getSavepointManager
in classAbstractTransactionStatus
- Throws:
NestedTransactionNotSupportedException
- if savepoints are not supported- See Also:
-
isTransactionSavepointManager
public boolean isTransactionSavepointManager()Return whether the underlying transaction implements theSavepointManager
interface and therefore supports savepoints.- See Also:
-
flush
public void flush()Delegate the flushing to the transaction object, provided that the latter implements theSmartTransactionObject
interface.- See Also:
-