Interface TransactionDefinition
- All Known Implementing Classes:
- DefaultTransactionDefinition
PlatformTransactionManager modernizing it
 to use enums, Slf4j and decoupling from Spring.
 Interface that defines Spring-compliant transaction properties.
 Based on the propagation behavior definitions analogous to EJB CMT attributes.
 Note that isolation level and timeout settings will not get applied unless
 an actual new transaction gets started. As only TransactionDefinition.Propagation.REQUIRED,
 TransactionDefinition.Propagation.REQUIRES_NEW and TransactionDefinition.Propagation.NESTED can cause
 that, it usually doesn't make sense to specify those settings in other cases.
 Furthermore, be aware that not all transaction managers will support those
 advanced features and thus might throw corresponding exceptions when given
 non-default values.
 
The read-only flag applies to any transaction context,
 whether backed by an actual resource transaction or operating non-transactionally
 at the resource level. In the latter case, the flag will only apply to managed
 resources within the application, such as a Hibernate Session.
- Since:
- 08.05.2003
- Author:
- Juergen Hoeller, graemerocher
- 
Nested Class SummaryNested ClassesModifier and TypeInterfaceDescriptionstatic enumIsolation levels.static enumPossible propagation values.
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final TransactionDefinitionThe default transaction definition.static final TransactionDefinitionA read only definition.static final DurationUse the default timeout of the underlying transaction system, or none if timeouts are not supported.
- 
Method SummaryModifier and TypeMethodDescriptiondefault ConnectionDefinitionIn some cases the transaction can require a new connection or alter the existing connection properties.default @NonNull Collection<Class<? extends Throwable>>Collection of exception classes that shouldn't cause the rollback.default @NonNull Optional<TransactionDefinition.Isolation>Return the isolation level.default @Nullable StringgetName()Return the name of this transaction.default @NonNull TransactionDefinition.PropagationReturn the propagation behavior.default @NonNull Collection<Class<? extends Throwable>>Collection of exception classes that should cause the rollback.Return the transaction timeout.Return whether to optimize as a read-only transaction.static @NonNull TransactionDefinitionCreate a newTransactionDefinitionwith a given name.static @NonNull TransactionDefinitionof(@NonNull TransactionDefinition.Propagation propagationBehaviour) Create a newTransactionDefinitionfor the given behaviour.default booleanCheck of the transaction should roll back when exception occurs.
- 
Field Details- 
DEFAULTThe default transaction definition.
- 
READ_ONLYA read only definition.
- 
TIMEOUT_DEFAULTUse the default timeout of the underlying transaction system, or none if timeouts are not supported.
 
- 
- 
Method Details- 
getPropagationBehaviorReturn the propagation behavior.Must return one of the PROPAGATION_XXXconstants defined onthis interface.The default is TransactionDefinition.Propagation.REQUIRED.- Returns:
- the propagation behavior
- See Also:
 
- 
getIsolationLevelReturn the isolation level.Must return one of the ISOLATION_XXXconstants defined onthis interface. Those constants are designed to match the values of the same constants onConnection.Exclusively designed for use with TransactionDefinition.Propagation.REQUIREDorTransactionDefinition.Propagation.REQUIRES_NEWsince it only applies to newly started transactions. Consider switching the "validateExistingTransactions" flag to "true" on your transaction manager if you'd like isolation level declarations to get rejected when participating in an existing transaction with a different isolation level.The default is TransactionDefinition.Isolation.DEFAULT. Note that a transaction manager that does not support custom isolation levels will throw an exception when given any other level thanTransactionDefinition.Isolation.DEFAULT.- Returns:
- the isolation level
- See Also:
 
- 
getTimeoutReturn the transaction timeout.Must return a number of seconds, or TIMEOUT_DEFAULT.Exclusively designed for use with TransactionDefinition.Propagation.REQUIREDorTransactionDefinition.Propagation.REQUIRES_NEWsince it only applies to newly started transactions.Note that a transaction manager that does not support timeouts will throw an exception when given any other timeout than TIMEOUT_DEFAULT.The default is TIMEOUT_DEFAULT.- Returns:
- the transaction timeout
 
- 
isReadOnlyReturn 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 HibernateSession.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. - Returns:
- trueif the transaction is to be optimized as read-only (- falseby default)
 
- 
getNameReturn the name of this transaction. Can benull.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).- Returns:
- the name of this transaction (nullby default}
 
- 
of@NonNull static @NonNull TransactionDefinition of(@NonNull @NonNull TransactionDefinition.Propagation propagationBehaviour) Create a newTransactionDefinitionfor the given behaviour.- Parameters:
- propagationBehaviour- The behaviour
- Returns:
- The definition
 
- 
namedCreate a newTransactionDefinitionwith a given name.- Parameters:
- name- The name
- Returns:
- The definition
- Since:
- 3.5.0
 
- 
getRollbackOnCollection of exception classes that should cause the rollback. Empty if all exception should cause the rollback.- Returns:
- the exception classes
- Since:
- 3.5.0
 
- 
getDontRollbackOnCollection of exception classes that shouldn't cause the rollback.- Returns:
- the exception classes
- Since:
- 3.5.0
 
- 
rollbackOnCheck of the transaction should roll back when exception occurs.- Parameters:
- e- The exception
- Returns:
- true if the transaction should roll back
- Since:
- 3.5.0
 
- 
getConnectionDefinitionIn some cases the transaction can require a new connection or alter the existing connection properties.- Returns:
- The connection definition that is required for this transaction.
 
 
-