`
zy19982004
  • 浏览: 661950 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:251955
社区版块
存档分类
最新评论

Spring学习一:事务参数

 
阅读更多

一.事务参数

     在spring里面,声明式事务是用事务参数来定义的。一个事务参数就是事务策略应该如何应用到某个方法的一段描述。一个事务参数由五个方面组成。

  1. 传播行为。
  2. 隔离级别。
  3. 只读。
  4. 事务超时。
  5. 回滚规则。

 

二.传播行为

     传播行为定义了关于客户端和被调用方法的事务边界。Spring定义了七种传播行为。只有PROPAGATION_REQUIRED,PROPAGATION_REQUIRED_NEW,PROPAGATION_NESTED才有可能主动开启一个新事务。

  1. PROPAGATION_MANDATORY:表示该方法必须运行在一个事务中。如果当前没有事务发生,将抛出一个异常。
  2. PROPAGATION_NEVER:表示该方法不需要运行在事务中。如果当前有事务在运行,将抛出一个异常。
  3. PROPAGATION_NOT_SUPPORTED:表示该方法不需要运行在事务中。如果当前有事务在运行,该事务会在此方法运行期间挂起。
  4. PROPAGATION_SUPPORTED:表示该方法不需要运行在事务中。但如果有一个事务在运行,该方法也可以在这个事务里运行。
  5. PROPAGATION_REQUIRED:表示该方法必须运行在事务中。如果当前有事务在运行,则该方法运行在此事务中,否则开启一个新的事务。
  6. PROPAGATION_REQUIRED_NEW:表示该方法必须运行在自己的事务中。如果当前有事务在运行,此事务挂起,开启一个新的事务。否则开启一个新的事务。
  7. PROPAGATION_NESTED:它与PROPAGATION_REQUIRED_NEW的区别是:PROPAGATION_REQUIRED_NEW完全是一个新的事务,单独commit和rollback,不依赖外部事务。而PROPAGATION_NESTED则是外部事务的子事务(称为嵌套事务),当外部事务commit时,嵌套事务才commit,当外部事务rollback时,嵌套事务才rollback。

 

三.隔离级别

   建议先阅读mysql事务隔离级别 。隔离级别定义了一个事务可能受其它事务影响的程度。Spring提供了五种事务隔离级别。

  1. ISOLATION_DEFAULT:使用后端数据库默认隔离级别。
  2. ISOLATION_READ_UNCOMMITED:对应Read uncommited(读取未提交的内容)。
  3. ISOLATION_READ_COMMITED:对应Read commited(读取提交内容)。
  4. ISOLATION_REPEATABLE_READ:对应Repeatable read(可重复读)。
  5. ISOLATION_SERIALIZABLE:对应Serializable(可串行化)。

四.只读

     如果一个事务只对后端数据库执行读操作,那么该数据库可以利用事务的只读特性,采取优化措施。《Spring in action》

写道
由于只读的优化措施是在一个事务启动时由后端数据库实施的,因此,只有对于那些具有可能启动一个新事务的传播行为(PROPAGATION_REQUIRED,PROPAGATION_REQUIREDS_NEW,PROPAGATION_NESTED)的方法来说,将事务声明为只读才有意义。

     我就有点不了解了,<prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>这样配置的readOnly岂不是没有意义?

 

五.超时

     假定你的事务运行时间特别长,而事务可能涉及到数据库锁定,长时间的运行事务会不必要的占据数据库资源。你可以声明一个事务,在特定的秒数后回滚,而不必等它自己结束。

 

六.回滚规则

     默认设置下,事务只在运行异常是回滚,受检异常不回滚。

 

 

 

 

分享到:
评论
1 楼 飞天奔月 2014-11-08  
这个系列”太监“了吗? 

相关推荐

    Spring技术内幕:深入解析Spring架构与设计原理 第2版

    Spring提供了一种声明式的事务管理方式,开发者只需要简单地配置即可实现对数据库操作的事务控制,无需在代码中手动管理事务的开启、提交或回滚。 **3. RESTful Web服务** Spring MVC框架支持构建RESTful风格的Web...

    spring 事务传播 demo

    在Spring框架中,事务管理是核心特性之一,它允许开发者以声明式或编程式的方式处理事务。本示例“spring 事务传播 demo”将聚焦于Spring的事务传播行为,这是在多个方法调用中控制事务边界的关键概念。下面我们将...

    Spring-data-jpa常用教程.pdf

    Spring-data-jpa 是 Spring 家族中的一个重要成员,它主要用于简化基于 Java Persistence API (JPA) 的数据访问层(DAO)的开发工作。JPA 作为 Java 平台的一种标准,旨在为 Java 应用程序提供一种通用的对象关系...

    spring学习:JDBC数据访问

    标题 "spring学习:JDBC数据访问" 涉及到的是Spring框架中关于JDBC(Java Database Connectivity)数据访问的相关内容。Spring是一个广泛使用的开源Java应用程序框架,它为开发人员提供了一个全面的平台来管理数据库...

    Spring aop、jdbc和事务tx练习

    Spring JDBC的核心是`JdbcTemplate`和`SimpleJdbcTemplate`,它们提供了事务管理、参数绑定、异常转换等功能,避免了SQL注入等问题。 3. **Spring 事务管理(TX)** Spring TX模块提供了声明式和编程式的事务管理...

    day39-Spring 06-Spring的AOP:带有切点的切面

    在Spring框架中,AOP(Aspect Oriented Programming,面向切面编程)是一种强大的设计模式,它允许程序员将关注点从核心业务逻辑中分离出来,如日志、事务管理等。在"day39-Spring 06-Spring的AOP:带有切点的切面...

    Spring技术内幕:深入解析Spring架构与设计原理

    4. **切面**:一个切面包含了一个切入点和一个或多个通知,表示一个横切关注点。 #### 四、Spring MVC Spring MVC是Spring框架的一部分,提供了一种基于MVC模式的Web应用程序开发方式。它简化了Web层的开发过程,...

    spring学习笔记

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...

    4.Spring中的JdbcTemplate,Spring中的的事务,

    通过本章节的学习,您应该能够掌握如何使用JdbcTemplate进行基本的数据库操作,以及如何在Spring中配置和使用声明式事务来管理复杂的业务流程。这些技能对于开发基于Spring框架的应用程序至关重要。

    struts+hibernate+spring源码学习:BBS系统(6月13日上传版)

    Struts、Hibernate和Spring是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出高效、可维护...通过这个BBS系统的源码,我们可以深入到每一个细节,从而更好地掌握Struts、Hibernate和Spring的精髓。

    spring声明式事务管理+jdbc+连接池.zip

    本资料包"spring声明式事务管理+jdbc+连接池.zip"显然是针对Spring框架在数据库操作方面的深入学习,特别是如何利用Spring进行声明式事务管理和JDBC操作,以及如何配置和使用数据库连接池。接下来,我们将详细探讨这...

    Spring事务管理和SpringJDBC思维导图

    通过学习和理解这些知识点,开发者可以更高效地使用Spring框架进行数据库操作,同时保证事务处理的正确性和性能。掌握Spring事务管理和Spring JDBC,不仅可以提升开发效率,还能降低出错的可能性,是成为资深Java...

    spring+mybatis+事务

    在IT行业中,Spring框架与MyBatis框架的整合是企业级应用开发中常见的技术栈,尤其是在处理复杂的...对于学习者来说,这是一个很好的实践和学习资源,可以帮助他们深入理解这两个框架的集成以及事务管理的原理和使用。

    Spring学习笔记.doc

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...

    Spring源码学习十二:@Transactional是如何工作的1

    在 Spring 框架中,@Transactional 注解是一个非常重要的概念,经常用于数据库操作。那么,@Transactional 注解是如何工作的呢?让我们深入源码分析。 首先,从 &lt;tx:annotation-driven/&gt; 说起。配置了 &lt;tx:...

    spring mybatis atomikos 多库分布式事务demo

    通过分析这些文件,开发者可以学习到如何在实际项目中实施Spring、MyBatis和Atomikos的集成,以处理复杂的分布式事务场景。 总之,“spring mybatis atomikos 多库分布式事务demo”是一个实践性的教程,帮助开发者...

    使用Atomikos处理ActiveMQ在Spring环境的XA事务

    在Spring框架中,Atomikos作为一个外部事务管理器,可以通过Spring的声明式事务管理进行集成。配置Atomikos时,你需要在Spring的配置文件中定义相关的bean,包括UserTransaction、TransactionManager以及相应的数据...

    Spring.MVC学习指南.pdf

    Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这份“Spring.MVC学习指南.pdf”很可能是为了帮助开发者深入理解和掌握Spring MVC的核心概念...

Global site tag (gtag.js) - Google Analytics