`

Spring事务管理要点

阅读更多
Spring事务管理要点
掌握Spring事务管理,需要先了解事务本身的特性。
事务特性(ACID):原子性,一致性,隔离性,持久性。
根据事务特性,Spring定义了如下规则。
隔离级别是指若干个并发的事务之间的隔离程度。TransactionDefinition 接口中定义了五个表示隔离级别的常量:
TransactionDefinition.ISOLATION_DEFAULT:这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就是TransactionDefinition.ISOLATION_READ_COMMITTED。
TransactionDefinition.ISOLATION_READ_UNCOMMITTED:该隔离级别表示一个事务可以读取另一个事务修改但还没有提交的数据。该级别不能防止脏读和不可重复读,因此很少使用该隔离级别。
TransactionDefinition.ISOLATION_READ_COMMITTED:该隔离级别表示一个事务只能读取另一个事务已经提交的数据。该级别可以防止脏读,这也是大多数情况下的推荐值。
TransactionDefinition.ISOLATION_REPEATABLE_READ:该隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同。即使在多次查询之间有新增的数据满足该查询,这些新增的记录也会被忽略。该级别可以防止脏读和不可重复读。
TransactionDefinition.ISOLATION_SERIALIZABLE:所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。
所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。Spring 支持 7 种事务传播行为:
PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与 PROPAGATION_REQUIRED 类似的操作。
Spring 默认的事务传播行为是 PROPAGATION_REQUIRED,它适合于绝大多数的情况。假设 ServiveX#methodX() 都工作在事务环境下(即都被 Spring 事务增强了),假设程序中存在如下的调用链:Service1#method1()->Service2#method2()->Service3#method3(),那么这 3 个服务类的 3 个方法通过 Spring 的事务传播机制都工作在同一个事务中。
总之,在相同线程中进行相互嵌套调用的事务方法工作于相同的事务中。如果这些相互嵌套调用的方法工作在不同的线程中,不同线程下的事务方法工作在独立的事务中。
如果需要完全掌握Spring事务管理,个人认为最佳实践是通过实际的项目结合源码进行分析,Spring事务管理正是其AOP的经典应用,在学习Spring事务管理的同时可以学习AOP实现的原理。

分享到:
评论

相关推荐

    struts2 spring hibernate整合要点、注意点

    -- Spring事务管理过滤器 --> <filter-name>openSessionInViewFilter <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter <filter-name>openSessionInViewFilter *....

    Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    - **事务管理**:Spring提供了一套强大的事务管理机制,能够在方法级别控制事务的开始和结束,确保业务逻辑的原子性。 #### 五、结论 通过整合Struts2、Spring与Hibernate,学生成绩管理系统不仅实现了基本的登录...

    Spring Hibernate 整合要点之JPA

    在Spring的配置文件(如`applicationContext.xml`)中,我们需要配置`LocalContainerEntityManagerFactoryBean`以创建EntityManagerFactory,并配置`JpaTransactionManager`作为事务管理器。例如: ```xml ...

    hibernate和spring技术难点及其要点总结

    1. **Spring的事务管理**:通过AOP(面向切面编程)实现声明式事务管理,简化了事务控制。 2. **IoC(Inversion of Control)容器**:Spring管理Hibernate Session,提供SessionFactory和Transaction的生命周期管理...

    java之hibernate和spring技术难点及其要点总结

    8. **Spring声明式事务**:Spring提供的声明式事务管理极大地简化了事务处理的复杂度。 9. **Servlet生命周期与工作原理**:了解Servlet的基本概念及其生命周期对于Web开发来说是基础。 10. **线程相关知识**: -...

    spring+framework+2.5+开发参考手册

    Spring提供了一套完整的事务管理解决方案,包括本地事务和分布式事务。它支持声明式事务管理,允许通过XML配置或注解来定义事务边界,而无需编写额外的事务管理代码。 #### 5. 测试支持 Spring框架提供了强大的...

    跟我学spring系列 蒋开涛

    ### 二、Spring事务管理 #### 1.6 事务基础 - **事务概述**:事务是一系列操作的集合,这些操作被视为一个不可分割的工作单元。如果事务中的所有操作都成功完成,则整个事务被提交;如果其中一个操作失败,则整个...

    hibernate+spring复习大纲

    4. **Spring事务管理**: 支持编程式和声明式事务,确保数据一致性。 5. **Spring JDBC**: 简化JDBC操作,提供模板方法和事务支持。 6. **Spring AOP代理**: 可以创建JDK动态代理或CGLIB代理,实现AOP功能。 7. **...

    spring整合struts2与hibernate核心配置文件

    Spring作为一个全面的后端框架,提供了依赖注入、AOP(面向切面编程)、事务管理等核心功能;Struts2作为MVC框架,负责处理用户请求并转发到相应的业务逻辑;而Hibernate则是一个ORM(对象关系映射)框架,它简化了...

    Spring视频教程(3)

    这一部分深入探讨了Spring如何通过AOP(面向切面编程)实现声明式事务管理,使得开发者无需显式编写事务控制代码,即可实现事务的自动管理。这大大提高了代码的可维护性和整洁性。 4. **回顾上节课的内容**: ...

    spring2.0技术手册中文版

    - **事务管理**:Spring如何支持多种类型的事务管理机制,包括编程式事务管理和声明式事务管理。 综上所述,《spring2.0技术手册中文版》是一本全面介绍Spring框架基础知识、核心特性和实际应用场景的手册。通过...

    Spring整合Mybatis与SpringBoot整合Mybatis原理分析

    - **事务管理**: 配置事务管理器,通常使用`PlatformTransactionManager`,并配合Spring的事务注解进行事务控制。 2. **Spring Boot整合Mybatis原理** - **起步依赖**: Spring Boot通过starter-persistence自动...

    spring框架\Spring 中文开发手册

    Spring的事务管理模块提供了声明式事务支持,允许开发者在不修改业务逻辑代码的情况下,通过配置实现事务控制。这大大简化了事务处理的复杂性,提高了代码的可读性和可维护性。 ### 集成测试 Spring框架还提供了...

    Spring+Jotm+Hibernate+Oracle+Junit 实现JTA分布式事务要求Demo工程

    2.Spring+Jotm整合实现JTA分布式事务,应用场景如转账等,同一事务内完成db1用户加100元、db2用户减100元。 3.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 (特别注意:Spring3.0里不在提供对jotm的...

    Spring+webservice例子

    Spring框架是一个开源的应用框架,它提供了丰富的功能,包括依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问以及各种类型的集成。Spring框架简化了Java应用程序的开发,通过提供一个统一的容器来管理对象...

    Spring专业学习资料

    以上内容概述了Spring框架的基本工作原理、使用原因以及SSH整合的概念和技术要点,并详细介绍了Spring框架中的事务管理机制及其相关的类和方法。希望这些信息能帮助读者更好地理解和掌握Spring框架的相关知识。

    Spring 3.0教程.pdf

    面向切面编程是一种编程范式,用于将横切关注点(如日志记录、事务管理等)从业务逻辑中分离出来。Spring框架支持AOP,允许开发者以声明的方式实现这些功能。 #### 数据访问/集成 Spring提供了丰富的数据访问抽象...

Global site tag (gtag.js) - Google Analytics