当前位置:首页 > 日记 > 正文

Spring 事务隔离与事务传播的详解与对比

Spring 事务隔离与事务传播的详解与对比

Spring 事务隔离与事务传播的详解与对比

Spring是SSH中的管理员,负责管理其它框架,协调各个部分的工作。今天一起学习一下Spring的事务管理。Spring的事务管理分为声明式跟编程式。声明式就是在Spring的配置文件中进行相关配置;编程式就是用注解的方式写到代码里。

Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、 TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为 SessionFactory,TransactionManager的实现为HibernateTransactionManager。

spring的事务隔离级别

  • ISOLATION_DEFAULT:使用数据库默认的隔离级别。
  • ISOLATION_READ_UNCOMMITTED:允许读取改变了的还未提交的数据,可能导致脏读、不可重复读和幻读。
  • ISOLATION_READ COMMITTED:允许并发事务提交之后读取,可以避免脏读,可能导致重复读和幻读。
  • ISOLATION_REPEATABLE_READ:对相同字段的多次读取结果一致,可导致幻读。
  • ISOLATION_SERIALIZABLE:完全服从ACID的原则,确保不发生脏读、不可重复读和幻读。

可以根据自己的系统对数据的要求采取适应的隔离级别,因为隔离牵涉到锁定数据库中的记录,对数据正性要求越严格,并发的性能也越差。

spring的事务传播行为

  • spring事务的传播行为说的是当一个方法调用另一个方法时,事务该如何操作。
  • PROPAGATION_MANDATORY:该方法必须运行在一个事务中。如果当前事务不存在则抛出异常。
  • PROPAGATION_NESTED:如果当前存在一个事务,则该方法运行在一个嵌套的事务中。被嵌套的事务可以从当前事务中单独的提交和回滚。如果当前不存在事务,则开始一个新的事务。各厂商对这种传播行为的支持参差不齐,使用时需注意。
  • PROPAGATION_NEVER:当前方法不应该运行在一个事务中。如果当前存在一个事务,则抛出异常。
  • PROPAGATION_NOT_SUPPORTED:当前方法不应该运行在一个事务中。如果一个事务正在运行,它将在该方法的运行期间挂起。
  • PROPAGATION_REQUIRED:该方法必须运行在一个事务中。如果一个事务正在运行,该方法将运行在这个事务中。否则,就开始一个新的事务。
  • PROPAGATION_REQUIRES_NEW:该方法必须运行在自己的事务中。它将启动一个新的事务。如果一个现有的事务正在运行,将在这个方法的运行期间挂起。
  • PROPAGATION_SUPPORTS:当前方法不需要事务处理环境,但如果一个事务已经在运行的话,这个方法也可以在这个事务里运行。

以上就是Spring 事务隔离与事务传播的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

Photoshop打造绚丽的烟花字体

Photoshop打造绚丽的烟花字体

字体,绚丽,烟花,电脑软件,Photoshop,利用Photoshop这款强大的图片编辑软件来打造绚丽的烟花字体,来装点你的生活吧。1、打开Photoshop,新建一个800*800大小的文件。背景填充为黑色。2、创建文字图层,本次以“新年快乐”为例,字体为&l…

Node.js利用断言模块assert进行单

Node.js利用断言模块assert进行单

单元测试,断言,模块,方法,电脑软件,前言对于NodeJS, assert模块提供了一系列的断言测试,其实这个模块主要倾向于内部使用,但是也能被用于项目中, 可以通过require(‘assert')的方式引入,下面本文将给大家介绍关于Node.js用断言模块assert进…

微信小程序 同步请求授权的详解

微信小程序 同步请求授权的详解

授权,同步请求,详解,程序,电脑软件,微信小程序 同步请求授权的详解需求分析: 1.在小程序首次打开的时候,我需要同时请求获取多个权限,由用户逐一授权。 ([‘scope.userInfo',‘scope.userLocation',‘scope.address',‘scope.record',‘scope…

JavaScript实现跟随滚动缓冲运动广

JavaScript实现跟随滚动缓冲运动广

运动,广告,电脑软件,JavaScript,当我们浏览一些网页时我们会发现页面的的边上会有广告图片,当滚动滚动条的时候这些广告图片会跟随性的随页面一起运动(这里我叫它为广告框)。一些网页的广告框是固定在浏览器上的用background:fixed;便可实现。这…

JavaScript之Date_动力节点Java学

JavaScript之Date_动力节点Java学

学院,节点,动力,电脑软件,JavaScript,在JavaScript中,Date对象用来表示日期和时间。要获取系统当前时间,用:var now = new Date();now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)now.getFullYear(); // 2015, 年份now.getMonth(); // 5, 月…

angularJS+requireJS实现controlle

angularJS+requireJS实现controlle

按需加载,示例,电脑软件,requireJS,angularJS,最近因为项目的比较大,需要加载的js文件较多,为了提高首屏页面的加载速度,需要对js文件进行按需加载,然后网上参考了一些资料,自己也深入研究一番之后,实现了按需加载控制器js文件及指令js文件的效果…

PS怎么设计等高线效果的背景图?

PS怎么设计等高线效果的背景图?

背景图,等高线,效果,电脑软件,PS,制作简单的背景图片软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、新建一个背景图层如图大小 2、然后利用矩形工具画一个500乘500像素的矩形如图所示3、给这个矩形…

15/18位身份证号码验证的正则表达

15/18位身份证号码验证的正则表达

正则表达式,验证,身份证号码,详细,电脑软件,前言开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单、效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧。介绍xxxxxx yyyy MM dd 375 0 …

jQuery中each循环的跳出和结束实例

jQuery中each循环的跳出和结束实例

循环,实例,结束,电脑软件,jQuery,Query中each类似于javascript的for循环 但不同于for循环的是在each里面不能使用break结束循环,也不能使用continue来结束本次循环,想要实现类似的功能就只能用return,break 用return falsecontinue …

ppt支持什么格式的视频

ppt支持什么格式的视频

支持,视频格式,格式,视频,电脑软件,  PPT支持的视频格式十分有限,一般可以插入WMV、MPEG-1(VCD格式)、AVI。但由于AVI的压缩编码方法很多,并不是所有的AVI格式都支持。下面就跟着小编看看PPT2007支持那种格式吧,常用ppt的朋友值得一看哦,欢迎…

Photoshop制作透明液体流动效果的

Photoshop制作透明液体流动效果的

透明,教程,立体字,液体,效果,Photoshop制作透明液体流动效果的立体字教程分享给的各位朋友,希望大家通过本教程可以get到利用光照效果和液化工具以及图层样式来制作透明液体流动效果的3d立体字,方法不难,下面就让我们一起开始制作吧!效果图:主要…

jquery将标签元素的高设为屏幕的百

jquery将标签元素的高设为屏幕的百

屏幕,标签,元素,设为,百分比,html部分:<body><div id="margin_box"></div></body>jquery部分:<script> $(function(){ var percent =0.15; $("#margin_box").css("height",window.document.body.clientHeight*percent) …