`
高军威
  • 浏览: 181120 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多
源地址: http://www.yshjava.cn/post/560.html

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



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

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

propagation

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

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



isolation(事务隔离级别)

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


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



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

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

相关推荐

    spring 事务传播与隔离级别DEMO

    本DEMO主要探讨的是Spring事务的传播行为和隔离级别,这些概念对于理解和优化数据库操作至关重要。让我们深入理解这些概念及其实际应用。 首先,我们来谈谈事务的传播行为。在Spring中,当一个方法被另一个具有事务...

    spring事务的传播特性和事务隔离级别

    ### Spring事务的传播特性和事务隔离级别 #### 一、Spring事务的传播特性(Propagation) 在Spring框架中,事务管理不仅提供了ACID属性的支持,还引入了事务的传播特性,这些特性决定了当一个方法调用另一个方法时,...

    SPRING事务传播特性&事务隔离级别

    ### Spring 事务传播特性和事务隔离级别详解 #### 一、Spring 事务传播特性 在进行多层服务架构设计时,事务的管理尤其重要。为了确保数据的一致性,Spring 提供了一种灵活的方式来控制事务的传播行为。下面详细...

    spring常用数据库事务传播属性和事务隔离级别1

    Spring 框架提供了一套完善的事务管理机制,其中包含了多种事务传播属性和事务隔离级别。这些特性使得在处理数据库操作时,能够更好地控制事务的边界和行为,从而确保数据的一致性和完整性。 首先,我们来看一下...

    Spring事务的传播特性和隔离级别

    ### Spring事务的传播特性和隔离级别 #### 一、事务的基本概念 在计算机科学中,事务(transaction)是指一系列操作的集合,这些操作要么全部成功完成,要么全部失败回滚,确保数据的一致性和完整性。事务具备四个...

    事务传播特性&事务隔离级别

    事务传播特性&事务隔离级别 事务传播特性是指在 Java 中,事务的传播行为,即在多个...事务传播特性和事务隔离级别是 Java 中事务管理的两个重要方面,需要深入了解和正确使用,以确保事务的正确执行和数据的一致性。

    spring 事务传播 demo

    总之,“spring 事务传播 demo”将展示如何利用Spring的事务传播特性来处理复杂的业务场景,帮助开发者更好地理解和运用这一强大的工具。通过学习和实践这个示例,你将能够掌握在多层方法调用中如何优雅地管理和协调...

    JDBC事务 JTA事务 传播特性 隔离级别

    最后,我们提到的是**事务的传播特性**,这是Spring框架中的一种概念,它定义了在一个事务上下文中如何执行另一个方法。例如: - **Not Supported**:不支持事务,如果当前有事务,会挂起事务。 - **Supports**:...

    Spring控制Hibernate中的事务传播特性与隔离级别操作.docx

    4. **声明式事务管理**:Spring允许在配置文件中声明事务边界,这样可以在多个方法之间定义事务传播行为和隔离级别,而无需在代码中显式处理。 例如,以下是如何使用HibernateTemplate删除Userinfo对象: ```java ...

    spring 事务传播

    通过上述对Spring事务传播行为的详细介绍,我们可以看出,正确理解和应用这些传播行为对于构建健壮的事务管理机制至关重要。每种传播行为都有其特定的应用场景和限制条件,开发者应根据具体的业务逻辑和需求来合理...

    Java面试题54.Spring事务的传播特性和隔离级别.mp4

    Java面试题54.Spring事务的传播特性和隔离级别.mp4

    02.Spring支持的常用数据库事务传播属性和事务隔离级别.zip

    本资料主要探讨的是Spring支持的数据库事务传播属性和事务隔离级别。 一、事务传播属性 1. REQUIRED(默认):如果当前存在事务,则加入该事务;如果没有事务,则创建一个新的事务。这是最常见的事务定义,适用于...

    Spring 管理事务(传播特性、隔离级别、readonly).rar

    综上所述,理解并熟练掌握Spring的事务管理机制,包括传播特性、隔离级别和readonly属性,对于开发高效、稳定的业务系统至关重要。正确配置和使用这些特性,能有效防止并发控制中的异常情况,保障数据的完整性和一致...

    Spring事务传播属性和隔离级别详细介绍

    Spring事务传播属性和隔離级别详细介绍 Spring事务传播属性(Propagation)是指在事务中如何...Spring事务传播属性和隔离级别是对事务进行管理和控制的重要机制,可以帮助开发者更好地管理事务,避免各种并发问题。

    spring事物隔离和传播机制

    ### Spring 事务隔离和传播机制详解 #### 一、Spring 事务传播机制 Spring 的事务管理功能非常强大,其中一个重要特性...在实际开发中,选择合适的事务传播行为和隔离级别对于保证数据一致性、避免并发问题至关重要。

    Spring事务传播机制.docx

    事务的隔离级别和传播行为是理解Spring事务管理的关键概念。以下是对这两个主题的详细解释: 首先,我们来看看Spring支持的五个事务隔离级别: 1. **DEFAULT**:这是PlatformTransactionManager的默认隔离级别,它...

    Spring事务管理Demo

    Spring事务管理的隔离级别包括: - `DEFAULT`:使用数据库的默认隔离级别。 - `READ_UNCOMMITTED`:最低隔离级别,允许读取未提交的数据。 - `READ_COMMITTED`:只允许读取已提交的数据,防止脏读。 - `REPEATABLE_...

    spring事物的7大传播机制,5个隔离机制

    ### Spring事务的七大传播行为 ...总结来说,选择合适的事务传播行为和隔离级别对于确保应用程序的数据一致性至关重要。开发者需要根据业务需求权衡性能和数据一致性之间的关系,以选择最合适的设置。

    Spring事务传播属性

    在深入理解Spring事务传播属性之前,我们首先需要了解Spring中的事务管理模型,包括编程式事务管理和声明式事务管理。 编程式事务管理通过TransactionTemplate或PlatformTransactionManager接口手动控制事务的开始...

Global site tag (gtag.js) - Google Analytics