Spring事务传播
博客专区 > Joey_T 的博客 > 博客详情
Spring事务传播
Joey_T 发表于3年前
Spring事务传播
  • 发表于 3年前
  • 阅读 4
  • 收藏 1
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: Spring事务传播

事务传播在org.springframework.transaction.TransactionDefinition中定义

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.

支持当前事务。如果当前没有事务则创建一个新的事务。

这是事务定义的默认设置,并且定义了一个典型的事务同步域。

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, PROPAGATION_SUPPORTS is slightly different from no transaction at all, as it defines a transaction scope that synchronization might apply to. As a consequence, the same resources (a JDBC Connection, a Hibernate Session, etc) will be shared for the entire specified scope. Note that the exact behavior depends on the actual synchronization configuration of the transaction manager!

In general, use PROPAGATION_SUPPORTS with care! In particular, do not rely on PROPAGATION_REQUIRED or PROPAGATION_REQUIRES_NEW within a PROPAGATION_SUPPORTS scope (which may lead to synchronization conflicts at runtime). If such nesting is unavoidable, make sure to configure your transaction manager appropriately (typically switching to "synchronization on actual transaction").

支持当前事务。如果当前没有的话就以非事务方式执行。

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 PROPAGATION_MANDATORY scope will always be driven by the surrounding transaction.

支持当前事务,如果当前不存在事务,就抛异常。

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 javax.transaction.TransactionManager to be made available it to it (which is server-specific in standard J2EE).

A PROPAGATION_REQUIRES_NEW scope always defines its own transaction synchronizations. Existing synchronizations will be suspended and resumed appropriately.

创建一个新事务。如果当前有事务就暂停它,然后创建一个新事务。

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 javax.transaction.TransactionManager to be made available it to it (which is server-specific in standard J2EE).

Note that transaction synchronization is not available within a PROPAGATION_NOT_SUPPORTED scope. Existing synchronizations will be suspended and resumed appropriately.

不支持当前事务,而总是以非事务方式执行。

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 PROPAGATION_NEVER scope.

不支持当前事务,如果当前有事务,就抛异常。

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.

如果当前存在事务,就在一个嵌套的事务中执行。类似于PROPAGATION_REQUIRED。

标签: Spring 事务
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 43
码字总数 22290
×
Joey_T
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: