Spring事务的传播和隔离级别简单总结

本文深入解析Spring事务的传播行为和隔离级别,详细解释了propagation属性和isolation(事务隔离级别)的概念及应用。通过具体实例,帮助开发者理解如何在实际项目中灵活运用Spring事务特性,提高代码的可靠性和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源地址: [url]http://www.yshjava.cn/post/560.html[/url]

[size=medium]Spring事务分两种形式,声明式事务和编程式事务。Spring的声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法中处理大量的try…catch…finally代码。[/size]

[img]http://dl.iteye.com/upload/picture/pic/128341/8a5c0df0-0c70-3e00-80c9-abed47b9daac.jpg[/img]

我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性。事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成。我们在进行事务划分时,需要进行事务定义,也就是配置事务的属性。

在上述事务属性中,传播行为和隔离级别尤其重要,在使用时务必理解到位。

[color=red][size=large]propagation [/size][/color]

propagation属性决定事务的传播行为,有以下选项可供使用:

•REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
•SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
•MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
•REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
•NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
•NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
•NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与REQUIRED类似的操作。

[img]http://dl.iteye.com/upload/picture/pic/128343/3f93511c-dfe7-3300-9669-b1e00377869a.png[/img]

[color=red][size=large]isolation(事务隔离级别) [/size][/color]

•SERIALIZABLE:最严格的级别,事务串行执行,资源消耗最大;
•REPEATABLE_READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。
•READ_COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。
•READ_UNCOMMITTED:保证了读取过程中不会读取到非法数据。
•DEFAULT: Spring默认的事务隔离级别。


隔离级别在于处理多事务的并发问题。我们知道并行可以提高数据库的吞吐量和效率,但是并不是所有的并发事务都可以并发运行,这需要查看数据库教材的可串行化条件判断了。

[img]http://dl.iteye.com/upload/picture/pic/128345/c369b555-357b-3856-a322-870d78ed06ff.png[/img]

Spring在TransactionDefinition接口中定义这些属性,以供PlatfromTransactionManager使用,PlatfromTransactionManager是Spring事务管理的核心接口。Spring针对不同的事务,Spring进行了不同的实现,例如对Hibernate事务的实现HibernateTractionManager,对JPA的JpaTransactionManager等等。

关于Spring事务的传播和隔离级别的更加详细的解释,这里推荐一篇好文章《Spring transaction 事务 --Isolation & Progation》[url]http://guanzhilibai.blog.163.com/blog/static/1358799320120120424489/[/url],另外在Spring中配置事务的方式有五种,如需了解详情,请参见文章《Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别》[url]http://blog.youkuaiyun.com/it_man/article/details/5074371[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值