All Known Implementing Classes:
TransactionAttribute, Ejb3TransactionAttribute, DefaultTransactionAttribute, DefaultTransactionDefinition, DelegatingTransactionAttribute, RuleBasedTransactionAttribute, TransactionTemplate, DelegatingTransactionDefinition
Note that isolation level and timeout settings will not get applied unless an actual new transaction gets started. As only #PROPAGATION_REQUIRED , #PROPAGATION_REQUIRES_NEW and #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.
Juergen - Hoeller08.05.2003 - | Field Summary | ||
|---|---|---|
| int | PROPAGATION_REQUIRED | Support a current transaction; create a new one if none exists.
Analogous to the EJB transaction attribute of the same name.
This is typically the default setting of a transaction definition, and typically defines a transaction synchronization scope. |
| int | PROPAGATION_SUPPORTS | Support a current transaction; execute non-transactionally if none exists.
Analogous to the EJB transaction attribute of the same name.
NOTE: For transaction managers with transaction synchronization,
In general, use
|
| int | PROPAGATION_MANDATORY | Support a current transaction; throw an exception if no current transaction
exists. Analogous to the EJB transaction attribute of the same name.
Note that transaction synchronization within a |
| int | PROPAGATION_REQUIRES_NEW | Create a new transaction, suspending the current transaction if one exists.
Analogous to the EJB transaction attribute of the same name.
NOTE: Actual transaction suspension will not work out-of-the-box
on all transaction managers. This in particular applies to
org.springframework.transaction.jta.JtaTransactionManager ,
which requires the A
|
| int | PROPAGATION_NOT_SUPPORTED | Do not support a current transaction; rather always execute non-transactionally.
Analogous to the EJB transaction attribute of the same name.
NOTE: Actual transaction suspension will not work out-of-the-box
on all transaction managers. This in particular applies to
org.springframework.transaction.jta.JtaTransactionManager ,
which requires the Note that transaction synchronization is not available within a
|
| int | PROPAGATION_NEVER | Do not support a current transaction; throw an exception if a current transaction
exists. Analogous to the EJB transaction attribute of the same name.
Note that transaction synchronization is not available within a
|
| int | PROPAGATION_NESTED | Execute within a nested transaction if a current transaction exists,
behave like #PROPAGATION_REQUIRED else. There is no analogous
feature in EJB.
NOTE: Actual creation of a nested transaction will only work on specific transaction managers. Out of the box, this only applies to the JDBC org.springframework.jdbc.datasource.DataSourceTransactionManager when working on a JDBC 3.0 driver. Some JTA providers might support nested transactions as well. |
| int | ISOLATION_DEFAULT | Use the default isolation level of the underlying datastore.
All other levels correspond to the JDBC isolation levels.
|
| int | ISOLATION_READ_UNCOMMITTED | Indicates that dirty reads, non-repeatable reads and phantom reads
can occur.
This level allows a row changed by one transaction to be read by another transaction before any changes in that row have been committed (a "dirty read"). If any of the changes are rolled back, the second transaction will have retrieved an invalid row.
|
| int | ISOLATION_READ_COMMITTED | Indicates that dirty reads are prevented; non-repeatable reads and
phantom reads can occur.
This level only prohibits a transaction from reading a row with uncommitted changes in it.
|
| int | ISOLATION_REPEATABLE_READ | Indicates that dirty reads and non-repeatable reads are prevented;
phantom reads can occur.
This level prohibits a transaction from reading a row with uncommitted changes in it, and it also prohibits the situation where one transaction reads a row, a second transaction alters the row, and the first transaction rereads the row, getting different values the second time (a "non-repeatable read").
|
| int | ISOLATION_SERIALIZABLE | Indicates that dirty reads, non-repeatable reads and phantom reads
are prevented.
This level includes the prohibitions in
#ISOLATION_REPEATABLE_READ and further prohibits the
situation where one transaction reads all rows that satisfy a
|
| int | TIMEOUT_DEFAULT | Use the default timeout of the underlying transaction system, or none if timeouts are not supported. |
| Method from org.springframework.transaction.TransactionDefinition Summary: |
|---|
| getIsolationLevel, getName, getPropagationBehavior, getTimeout, isReadOnly |
| Method from org.springframework.transaction.TransactionDefinition Detail: |
|---|
Must return one of the Only makes sense in combination with #PROPAGATION_REQUIRED or #PROPAGATION_REQUIRES_NEW . Note that a transaction manager that does not support custom isolation levels will throw an exception when given any other level than #ISOLATION_DEFAULT . |
null.
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
must (and will) be the
|
Must return one of the |
Must return a number of seconds, or #TIMEOUT_DEFAULT . Only makes sense in combination with #PROPAGATION_REQUIRED or #PROPAGATION_REQUIRES_NEW . Note that a transaction manager that does not support timeouts will throw an exception when given any other timeout than #TIMEOUT_DEFAULT . |
The read-only flag applies to any transaction context, whether
backed by an actual resource transaction
(#PROPAGATION_REQUIRED /#PROPAGATION_REQUIRES_NEW ) or
operating non-transactionally at the resource level
(#PROPAGATION_SUPPORTS ). In the latter case, the flag will
only apply to managed resources within the application, such as a
Hibernate This just serves as a hint for the actual transaction subsystem; it will not necessarily cause failure of write access attempts. A transaction manager that cannot interpret the read-only hint will not throw an exception when asked for a read-only transaction. |