Class DefaultSynchronousTransactionState
- All Implemented Interfaces:
SynchronousTransactionState
,TransactionState
SynchronousTransactionState
.- Since:
- 3.4.0
- Author:
- Denis Stepanov
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Clear the entire transaction synchronization state: registered synchronizations as well as the various transaction characteristics.void
Deactivate transaction synchronization for the current state.Return an unmodifiable snapshot list of all registered synchronizations for the current state.Return the isolation level for the current transaction, if any.Return the name of the current transaction, ornull
if none set.void
Activate transaction synchronization for the current state.boolean
Return whether there currently is an actual transaction active.boolean
Return if transaction synchronization is active for the current state.boolean
Return whether the current transaction is marked as read-only.void
registerSynchronization
(TransactionSynchronization synchronization) Register a new transaction synchronization for the current state.void
setActualTransactionActive
(boolean active) Expose whether there currently is an actual transaction active.void
setTransactionIsolationLevel
(TransactionDefinition.Isolation isolationLevel) Expose an isolation level for the current transaction.void
setTransactionName
(String name) Expose the name of the current transaction, if any.void
setTransactionReadOnly
(boolean readOnly) Expose a read-only flag for the current transaction.
-
Constructor Details
-
DefaultSynchronousTransactionState
public DefaultSynchronousTransactionState()
-
-
Method Details
-
isSynchronizationActive
public boolean isSynchronizationActive()Description copied from interface:SynchronousTransactionState
Return if transaction synchronization is active for the current state. Can be called before register to avoid unnecessary instance creation.- Specified by:
isSynchronizationActive
in interfaceSynchronousTransactionState
- Returns:
- True if a synchronization is active
- See Also:
-
initSynchronization
Description copied from interface:SynchronousTransactionState
Activate transaction synchronization for the current state. Called by a transaction manager on transaction begin.- Specified by:
initSynchronization
in interfaceSynchronousTransactionState
- Throws:
IllegalStateException
- if synchronization is already active
-
registerSynchronization
Description copied from interface:SynchronousTransactionState
Register a new transaction synchronization for the current state. Typically called by resource management code.Note that synchronizations can implement the
Ordered
interface. They will be executed in an order according to their order value (if any).- Specified by:
registerSynchronization
in interfaceSynchronousTransactionState
- Parameters:
synchronization
- the synchronization object to register- See Also:
-
Ordered
-
getSynchronizations
Description copied from interface:SynchronousTransactionState
Return an unmodifiable snapshot list of all registered synchronizations for the current state.- Specified by:
getSynchronizations
in interfaceSynchronousTransactionState
- Returns:
- unmodifiable List of TransactionSynchronization instances
- Throws:
IllegalStateException
- if synchronization is not active- See Also:
-
clearSynchronization
Description copied from interface:SynchronousTransactionState
Deactivate transaction synchronization for the current state. Called by the transaction manager on transaction cleanup.- Specified by:
clearSynchronization
in interfaceSynchronousTransactionState
- Throws:
IllegalStateException
- if synchronization is not active
-
setTransactionName
Description copied from interface:SynchronousTransactionState
Expose the name of the current transaction, if any. Called by the transaction manager on transaction begin and on cleanup.- Specified by:
setTransactionName
in interfaceSynchronousTransactionState
- Parameters:
name
- the name of the transaction, ornull
to reset it- See Also:
-
getTransactionName
Description copied from interface:SynchronousTransactionState
Return the name of the current transaction, ornull
if none set. To be called by resource management code for optimizations per use case, for example to optimize fetch strategies for specific named transactions.- Specified by:
getTransactionName
in interfaceSynchronousTransactionState
- Returns:
- The current transaction name
- See Also:
-
setTransactionReadOnly
public void setTransactionReadOnly(boolean readOnly) Description copied from interface:SynchronousTransactionState
Expose a read-only flag for the current transaction. Called by the transaction manager on transaction begin and on cleanup.- Specified by:
setTransactionReadOnly
in interfaceSynchronousTransactionState
- Parameters:
readOnly
-true
to mark the current transaction as read-only;false
to reset such a read-only marker- See Also:
-
isTransactionReadOnly
public boolean isTransactionReadOnly()Description copied from interface:SynchronousTransactionState
Return whether the current transaction is marked as read-only. To be called by resource management code when preparing a newly created resource (for example, a Hibernate Session).Note that transaction synchronizations receive the read-only flag as argument for the
beforeCommit
callback, to be able to suppress change detection on commit. The present method is meant to be used for earlier read-only checks, for example to set the flush mode of a Hibernate Session to "FlushMode.NEVER" upfront.- Specified by:
isTransactionReadOnly
in interfaceSynchronousTransactionState
- Returns:
- Whether the transaction is read only
- See Also:
-
setTransactionIsolationLevel
Description copied from interface:SynchronousTransactionState
Expose an isolation level for the current transaction. Called by the transaction manager on transaction begin and on cleanup.- Specified by:
setTransactionIsolationLevel
in interfaceSynchronousTransactionState
- Parameters:
isolationLevel
- the isolation level to expose, according to the JDBC Connection constants (equivalent to the corresponding TransactionDefinition constants), ornull
to reset it- See Also:
-
Connection.TRANSACTION_READ_UNCOMMITTED
Connection.TRANSACTION_READ_COMMITTED
Connection.TRANSACTION_REPEATABLE_READ
Connection.TRANSACTION_SERIALIZABLE
TransactionDefinition.Isolation.READ_UNCOMMITTED
TransactionDefinition.Isolation.READ_COMMITTED
TransactionDefinition.Isolation.REPEATABLE_READ
TransactionDefinition.Isolation.SERIALIZABLE
TransactionDefinition.getIsolationLevel()
-
getTransactionIsolationLevel
Description copied from interface:SynchronousTransactionState
Return the isolation level for the current transaction, if any. To be called by resource management code when preparing a newly created resource (for example, a JDBC Connection).- Specified by:
getTransactionIsolationLevel
in interfaceSynchronousTransactionState
- Returns:
- the currently exposed isolation level, according to the
JDBC Connection constants (equivalent to the corresponding
TransactionDefinition constants), or
null
if none - See Also:
-
Connection.TRANSACTION_READ_UNCOMMITTED
Connection.TRANSACTION_READ_COMMITTED
Connection.TRANSACTION_REPEATABLE_READ
Connection.TRANSACTION_SERIALIZABLE
TransactionDefinition.Isolation.READ_UNCOMMITTED
TransactionDefinition.Isolation.READ_COMMITTED
TransactionDefinition.Isolation.REPEATABLE_READ
TransactionDefinition.Isolation.SERIALIZABLE
TransactionDefinition.getIsolationLevel()
-
setActualTransactionActive
public void setActualTransactionActive(boolean active) Description copied from interface:SynchronousTransactionState
Expose whether there currently is an actual transaction active. Called by the transaction manager on transaction begin and on cleanup.- Specified by:
setActualTransactionActive
in interfaceSynchronousTransactionState
- Parameters:
active
-true
to mark the current state as being associated with an actual transaction;false
to reset that marker
-
isActualTransactionActive
public boolean isActualTransactionActive()Description copied from interface:SynchronousTransactionState
Return whether there currently is an actual transaction active. This indicates whether the current state is associated with an actual transaction rather than just with active transaction synchronization.To be called by resource management code that wants to discriminate between active transaction synchronization (with or without backing resource transaction; also on PROPAGATION_SUPPORTS) and an actual transaction being active (with backing resource transaction; on PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW, etc).
- Specified by:
isActualTransactionActive
in interfaceSynchronousTransactionState
- Returns:
- Whether a transaction is active
- See Also:
-
clear
public void clear()Description copied from interface:SynchronousTransactionState
Clear the entire transaction synchronization state: registered synchronizations as well as the various transaction characteristics.- Specified by:
clear
in interfaceSynchronousTransactionState
- See Also:
-
SynchronousTransactionState.clearSynchronization()
SynchronousTransactionState.setTransactionName(java.lang.String)
SynchronousTransactionState.setTransactionReadOnly(boolean)
SynchronousTransactionState.setTransactionIsolationLevel(io.micronaut.transaction.TransactionDefinition.Isolation)
SynchronousTransactionState.setActualTransactionActive(boolean)
-