欢迎来到天天文库
浏览记录
ID:38275488
大小:38.50 KB
页数:7页
时间:2019-06-07
《Spring事务管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Spring提供了一流的事务管理。在Spring中可以支持声明式事务和编程式事务。本章主要目标如下:1,Spring事务2,事务属性3,事务管理器4,声明式事务1.1Spring的事务事务管理在应用程序中起着至关重要的作用:它是一系列任务的组成工作单元,在这个工作单元中,所有的任务必须同时执行。它们只有二种可能执行结果,要么所有任务全部执行成功,要么所有任务全部执行失败。Spring中提供了丰富的事务管理功能,它们超过了EJB并且和EJB一样支持声明式事务,重要的是Spring提供了致的事务管理,它有如下优点。1,为不同的事务的AP
2、I提供一致的编程模式2,提供更简单,更易地使用的编程式事务管理3,支持Spring声明事务4,整合Spring对数据访问的抽像1.2事务的ACID特性事务使用ACID特性来衡量事务的质量。介绍如下:1,原子性事务必须是原子的,在事务结束的时候,事务中的所有任务必须全部成功完成,否则全部失败,事务回滚到事务开始之间的状态。2,一致性事务必须保证和数据库的一致性,即数据库中的所有数据和现实保持一致。如果事务失败数据必须返回到事务执行之前的状态,反之修改数据和现实的同步。3,隔离性隔离性是事务与事务之间的屏障,每个事务必须与其他事务的执行
3、结果隔离开,直到该事务执行完毕,它保证了事务的访问的任何数据不会受其他事务执行结果的影响。4,持久性如果事务成功执行,无论系统发生任何情况,事务的持久性都必须保证事务的执行结果是永久的。1.3事务之间的缺陷在事务处理中有违返ACID特性的3个问题:脏读取,不可重复读和幻读行。如果存在多个并发事务在运行,而这种事务操作了同一个数据来完成它们的任务,就会导致3个问题的存生。要解决它们,就必须在事务之间定义合适的隔离级别。为保证事务的完整性,必须解决事务之间可能存在的3个问题。(1)脏读取当一个事务读取了另一个事务尚未提交的更新,就叫脏读
4、取。在另一个事务回滚的情况下,当前事务所读取的另一个事务的数据就是无效的。(2)不可重复读取在一个事务中执行多次同样的查询操作,但每次查询的结果都不一样,就叫做不可重复读取,通常这种情况是由于数据在二次查询之间被另一个并发的事务所修改。(3)幻影行这是对事务危害最小的一个问候,它类似不可重复读取,也是一个事务的更新结果影响到另一个事务问题。但是它不仅影响另一个事务查询结果,而且还会使查询语句返回一些不同的行录行。这3个问题危害程度依次为:脏读取最大-->不可重复读取-->幻影行最小。1.4事务的属性本节主要介绍将事务策略应用到方法的
5、属性描述,其内容包括事务的传播行为,事务的隔离级别,事务的只读和超时属性。1,事务的传播行为传播行为是事务应用于方法的边界,它定义了事务的建立,暂停等行为属性。在Spring中共有7种,EJBCMT共6种。*PROPAGATION_MANDATORY:规定了方法必须在事务中运行,否则会抛出异常*PROPAGATION_NESTED:使方法运行在嵌套事务中,否则这个属性和PROPAGATION_REQUIRED属性的义相同PROPAGATION_NEVER使当前方法永远不在事务中运行,否则抛出异常PROPAGATION_NOT_SUP
6、PORTED定义为当前事务不支持的方法,在该方法运行期间正在运行的事务会被暂停*PROPAGATION_REQUIRED规定当前的方法必须在事务中,如果没有事务就创建一个新事务,一个新事务和方法一同开始,随着方法的返回或抛出异常而终止*PROPAGATION_REQUIRED_NEW当前方法必须创建新的事务来运行,如果现存的事务正在运行就暂停它PROPAGATION_SUPPORTS规定当前方法支持当前事务处理,但如果没有事务在运行就使用非事务方法执行以上定义Spring在事务中的传播行为分别对应EJB的事务CMT中的所有传播行为,
7、其在PROPAGATION_NESTED是Spring在CMT之外定义的事务传播行为。例如:PROPAGATION_REQUIRED,timeout_5,readOnlyPROPAGATION_REQUIREDPROPAGATION_REQUIRED2,事
8、务的隔离级别为解决事务之间的3个缺陷,必须在事务之间建立隔离关系来保证事务的完整性。ISOLATION_DEFAULT使用数据库默认的隔离级别ISOLATION_COMMITTED允许读取其他并发事务已经提交的更新(防此脏读)ISOL
此文档下载收益归作者所有