Class GenericReactiveTransaction
- All Implemented Interfaces:
ReactiveTransaction, TransactionExecution
ReactiveTransaction interface,
used by AbstractReactiveTransactionManager. Based on the concept
of an underlying "transaction object".
Holds all status information that AbstractReactiveTransactionManager
needs internally, including a generic transaction object determined by the
concrete transaction manager implementation.
NOTE: This is not intended for use with other ReactiveTransactionManager implementations, in particular not for mock transaction managers in testing environments.
- Since:
- 5.2
- Author:
- Mark Paluch, Juergen Hoeller
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionGenericReactiveTransaction(@Nullable String transactionName, @Nullable Object transaction, boolean newTransaction, boolean newSynchronization, boolean nested, boolean readOnly, boolean debug, @Nullable Object suspendedResources) Create a newDefaultReactiveTransactionStatusinstance. -
Method Summary
Modifier and TypeMethodDescriptionReturn 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).booleanReturn whether there is an actual transaction active: this is meant to cover a new transaction as well as participation in an existing transaction, only returningfalsewhen not running in an actual transaction at all.booleanReturn whether this transaction is completed, that is, whether it has already been committed or rolled back.booleanisDebug()Return whether the progress of this transaction is debugged.booleanisNested()Return if this transaction executes in a nested fashion within another.booleanReturn if a new transaction synchronization has been opened for this transaction.booleanReturn 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.booleanReturn if this transaction is defined as read-only transaction.booleanDetermine the rollback-only flag via checking this ReactiveTransactionStatus.voidMark this transaction as completed, that is, committed or rolled back.voidSet the transaction rollback-only.
-
Constructor Details
-
GenericReactiveTransaction
public GenericReactiveTransaction(@Nullable String transactionName, @Nullable Object transaction, boolean newTransaction, boolean newSynchronization, boolean nested, boolean readOnly, boolean debug, @Nullable Object suspendedResources) Create a newDefaultReactiveTransactionStatusinstance.- 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:TransactionExecutionReturn 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.
- Specified by:
getTransactionNamein interfaceTransactionExecution- See Also:
-
getTransaction
Return the underlying transaction object.- Throws:
IllegalStateException- if no transaction is active
-
hasTransaction
public boolean hasTransaction()Description copied from interface:TransactionExecutionReturn whether there is an actual transaction active: this is meant to cover a new transaction as well as participation in an existing transaction, only returningfalsewhen not running in an actual transaction at all.The default implementation returns
true.- Specified by:
hasTransactionin interfaceTransactionExecution- See Also:
-
isNewTransaction
public boolean isNewTransaction()Description copied from interface:TransactionExecutionReturn 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
truefor an actual nested transaction but potentiallyfalsefor 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.- Specified by:
isNewTransactionin interfaceTransactionExecution- See Also:
-
isNewSynchronization
public boolean isNewSynchronization()Return if a new transaction synchronization has been opened for this transaction. -
isNested
public boolean isNested()Description copied from interface:TransactionExecutionReturn if this transaction executes in a nested fashion within another.The default implementation returns
false.- Specified by:
isNestedin interfaceTransactionExecution- See Also:
-
isReadOnly
public boolean isReadOnly()Description copied from interface:TransactionExecutionReturn if this transaction is defined as read-only transaction.The default implementation returns
false.- Specified by:
isReadOnlyin interfaceTransactionExecution- See Also:
-
isDebug
public boolean isDebug()Return whether the progress of this transaction is debugged. This is used byAbstractReactiveTransactionManageras an optimization, to prevent repeated calls tologger.isDebugEnabled(). Not really intended for client code. -
getSuspendedResources
-
setRollbackOnly
public void setRollbackOnly()Description copied from interface:TransactionExecutionSet the transaction rollback-only. This instructs the transaction manager that the only possible outcome of the transaction may be a rollback, as alternative to throwing an exception which would in turn trigger a rollback.The default implementation throws an UnsupportedOperationException.
- Specified by:
setRollbackOnlyin interfaceTransactionExecution- See Also:
-
isRollbackOnly
public boolean isRollbackOnly()Determine the rollback-only flag via checking this ReactiveTransactionStatus.Will only return "true" if the application called
setRollbackOnlyon this TransactionStatus object.- Specified by:
isRollbackOnlyin interfaceTransactionExecution- See Also:
-
setCompleted
public void setCompleted()Mark this transaction as completed, that is, committed or rolled back. -
isCompleted
public boolean isCompleted()Description copied from interface:TransactionExecutionReturn whether this transaction is completed, that is, whether it has already been committed or rolled back.The default implementation returns
false.- Specified by:
isCompletedin interfaceTransactionExecution
-