spring in action学习笔记 5 事务中参数的一些汇总

事务创建时或者是现有事务可以使用所定义的传播规则 Spring提供几种传播规则供选择

[b]1.传播行为[/b]
PROPAGATION_MANDATORY:表示该方法必须运行在一个事务中。如果当前没有事务正在发生,将抛出一个异常。

PROPAGATION_NESTED:表示如果当前正由一个事务在进行中,则该方法应当运行在一个嵌套式事务中。被嵌套的事务可以独立于封装事务进行提交或回滚。如果封装事务不存在。行为就像PROPAGATION_REQUIRED一样。请注意各厂商对于这种传播行为的支持是参差不齐的。请参考资源管理器的文档,确定它们是否支持嵌套式事务。

PROPAGATION_NEVER:表示当前的方法不应该在一个事务上下文中运行。如果当前正有一个事务在运行,则抛出一个异常。

PROPAGATION_NOT_SUPPORTED:表示该方法不应该在一个事务中运行。如果一个现有的事务正在进行中,它将在该方法的运行期间被挂起。如果正在使用JTATransactionManager,则需要访问TransactionManager

PROPAGATION_REQUIRED:表示当前方法必须在一个事务中运行。如果一个现有的事务正在进行中,该方法将会在那个事务中运行。否则的话,就要开始一个新的事务。

PROPAGATION_REQUIRES_NEW:表示当前方法必须在它自己的事务里运行。一个新的事务将被启动,而且如果有一个现有事务正在运行的话,则将在这个方法运行期间被挂起。如果正在使用JTATransactionManager,则需要访问TransactionManager

PROPAGATION_SUPPORTS:表示当前方法不需要事务性上下文,但是如果有一个事务已经在运行的话,它也可以在这个事务里运行


[b]2.隔离级别[/b]
ISOLATION_DEFAULT:使用后端数据库默认的隔离级别

ISOLATION_READ_UNCOMMITTED:允许读取尚未提交的更改。可能导致脏读,幻读或不可重复读

ISOLATION_READ_COMMITTED:允许从已经提交的并发事务读取。可防止脏读,但幻读和不可重复读仍可能会发生。

ISOLATION_REPEATABLE_READ:对相同字段的多次读取的结果是一致的,除非数据被当前事务本事改变。可防止脏读和不可重复读,但幻读仍可能会发生

ISOLATION_SERIALIZABLE:完全服从ACID的隔离级别,确保不发生脏读,不可重复读和幻读。这在所有隔离级别中也是最慢的,因为它通常是通过完全锁定当前事务所涉及的数据表来完成的


[b]3.事务五边形的这6个方面在<tx:mathod>元素的参数里指定[/b]
isolation:指定事务隔离级别

no-rollback-for:指定对于哪些异常当前事务应该继续执行而不要回滚

propagation:定义事务的传播规则

read-only:指定一个事务为只读

rollback-for:指定对于哪些受阻异常应该回滚事务而不要提交

timeout:为一个长时间运行的事务定义超时
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值