Spring之事务Transaction管理

b spring 之事务管理框架 transaction 文章目录1.事务管理1.1 Spring框架事务模型的优点1.1.1 全局事务1.1.2 本地事务1.1.3 Spring框架一致的事务模型1.2 理解Spring事务的抽象1.3. 用事务来同步资源1.3.1 高级的同步方式1.3.2.低级的同步方式1.3.3. TransactionAwareDataSourceProxy1.4 声明式事务管理1.4.1 理解Spring 声明式事务的实现。1.4.2 事务声明实现的样例1.4.3. Rolling Back a Declarative Transact 阅读详情

1.什么是事务(Transaction)

    一组业务逻辑(如:ABCDEF)要么全部执行成功,要么全部执行不成功的操作就叫做事务。

  1.1事务的特性:

     原子性(Atomicity):一个事务就如同一个原子,一个不可分割的部分。

     一致性(Consistency):如同执行数据库操作后,数据不会破坏。(假设给A账户转钱,A账户扣了钱,不可能B账户没有增加钱)

     隔离性(Transaction isolation Level):关于事务的并发。(假设我们编写了一条update语句对数据库进行操作,同时别 人也编写了一条delete对相同的数据进行操作,可以想象,如果先执行了delete后,再执行update就会报错)

     持久性(Durability):当我们对数据库执行了insert操作后,数据库就应该保证有一条数据永久性的存放在磁盘中。

  1.2隔离性问题:

       脏读(Dirty Read):一个事务读到了另一个事务没有提交的数据。(例如:在T1时刻事务A开始事务。在T2时刻事务A查询账户余额为1000,同时在T2时刻事务B开始事务。在T3时刻事务A从账户取出100元并把余额改为900。在T4时刻,事务B查询账户余额为900。在T5时刻事务A撤销事务,并把余额恢复为1000。在T6时刻事务B向账户存入100,并把余额改为1000。在T7时刻事务B提交事务。然而此时账户余额应该为1100,而实际上账户余额只有1000,这样就违背了事务的一致性)

       不可重复读(Unrepeatable Read):一个事务读取到了另一个事务已经提交了的数据(update)。(例如:在T1时刻事务A开始事务。在T2时刻事务B开始事务。在T3时刻事务B查询账户余额为1000。在T4时刻事务A查询账户余额为1000。在T5时刻事务B从账户中存入100。在T6时刻事务B提交事务。在T7时刻事务A从账户取出100。在T8时刻事务A撤销事务将余额恢复为1000。然而事实上事务B向账户存入了100,账户余额为1100。而当事务A回滚的时候将账户余额改为了1000)

       幻读(Phantom Read):一个事务读取到了另一个事务已经提交了的数据(insert)。(例如:在T1时刻事务A开始事务,在T2时刻事务B开始事务。在T3时刻事务A统计总存款为1000。在T4时刻事务B取出100,并把余额改为900。在T5时刻事务B提交事务。在T6时刻事务A向账号中汇入100并把余额改为1100。在T7时刻事务A提交事务。然而实际上事务B已经取出了100,事务A存入100是在事务B取出100前进行读取余额为1000,这样就导致了数据增多)

  1.3隔离级别:

    Read Committed(读已提交):解决了脏读问题,而没有解决不可重复读和幻读。

    Read Uncommitted(读未提交):存在3个问题。

    Repeatable Read(可重复读):解决脏读和不可重复读。存在一个问题。

    Serializable(串行化):解决了所有问题。

   JDBC也提供了这四种事务的隔离级别。四种隔离级别的执行效率按(Read Uncommitted》Read Committed》Repeatable Read》Serializable)递减。

2.Spring对事务的管理介绍

  2.1需要导入jar包(Spring-tx.jar)

  2.2spring-tx.jar包中的三个顶级接口介绍:

       PlatformTransactionManager(平台事务管理器):要通过Spring管理事务就必须使用事务管理器,因此就必须配置事务管理器。

由于Spring-tx.jar包中就只定义了平台事务管理器的接口,并没实现事务管理,因此需要提供实现类,因此就需要导入以下jar包(spring-jdbc.jar这是Spring整合jdbc开发用的。spring-orm.jar这是Spring整合hibernate开发用的)。常见的事管理器有:DataSourceTransactionManager(jdbc开发时事务管理器)、HibernateTransactionManager(hibernate开发时事务管理器)

     

       TransactionDefinition(事务详情、事务定义、事务属性):Spring用于确定事务的具体详情,例如:隔离级别、是否只读、超时时间等。

       Spring在事务详情中提供了事务的传播行为(两个业务之间如何共享事务):

       

        PROPAGATION_REQUIRED , required , 必须  【默认值】

   支持当前事务,A如果有事务,B将使用该事务。

   如果A没有事务,B将创建一个新的事务。

        PROPAGATION_SUPPORTS ,supports ,支持

   支持当前事务,A如果有事务,B将使用该事务。

   如果A没有事务,B将以非事务执行。

        PROPAGATION_MANDATORY,mandatory ,强制

   支持当前事务,A如果有事务,B将使用该事务。

   如果A没有事务,B将抛异常。

  &nbs

Spring Transaction 声明式事务管理 Spring Transaction 声明式事务管理1. Spring 事务特性2. Spring 事务API3. Spring 事务传播行为4. Spring 事务分类4.1 编程式事务4.2 声明式事务5. Spring 事务操作转账5.1 无事务操作5.2 XML 配置事务5.3 配置事务通知5.4 注解 配置事务 参考资料:https://lfvepclr.gitbooks.io/spring-framework-5-doc-cn/content/ 1. Spring 事务特性 事务 : 是逻辑上 阅读详情

相关推荐

Spring事务管理的jar包

Spring事务管理中所需要的jar包是 spring-tx-3.2.0.RELEASE.jar

Transactional所需要的jar包:

1、aopalliance.jar 这个包是AOP联盟的API包,里面包含了针对面向切面的接口。(通常Spring等其它具备动态织入功能的框架依赖此包) 2、aspectjrt.jar     处理事务和AOP所需的包 3、aspectjweaver.jar 处理事务和AOP所需的包 4、cglib-nodep.jar    spring中自动代理所需jar包

org.springframework.transaction-3.2.4.RELEASE.jar

org.springframework.transaction-3.2.4.RELEASE.jar,最新版的org.springframework.transaction,Wed Aug 07 16:44:37 GMT+01:00 2013

javax.transaction.jar

javax.transaction.jar javax.transaction.jar

Spring框架事务管理jar包

org.springframework.transaction-3.2.4.RELEASE.jar,最新版的org.springframework.transaction,Wed Aug 07 16:44:37 GMT+01:00 2013

DVWA靶场实战:手把手教你绕过文件上传限制,用蚁剑连接一句话木马

本文详细介绍了在DVWA靶场中如何绕过文件上传限制并利用蚁剑连接一句话木马的实战技巧。通过分析文件上传漏洞原理、创建一句话木马、使用Burp Suite拦截修改请求以及配置蚁剑连接WebShell的全过程,帮助安全研究人员深入理解Web安全防护与攻击技术。

weixin_30335575的博客 90

WRF实战:自定义Vtable解析ECMWF海温数据的关键步骤与技巧

本文详细介绍了在WRF模型中自定义Vtable以解析ECMWF海温数据的关键步骤与技巧。通过解剖GRIB文件、编写自定义Vtable条目以及配置METGRID.TBL,解决了ECMWF数据与WRF模型对接的难题,为海洋气象和台风模拟研究提供了高精度数据输入方案。

weixin_29279101的博客 335

机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾

f作者: 寒小阳 &&龙心尘 时间:2015年10月。 出处: 声明:版权所有,转载请注明出处,谢谢。手把手机器学习之逻辑回归应用——Kaggle泰坦尼克之灾1.引言先说一句,年末双十一什么的一来,真是非(mang)常(cheng)欢(gou)乐(le)!然后push自己抽出时间来写这篇blog的原因也非常简单: 写完前两篇逻辑回归的介绍和各个角度理解之后,小伙伴们纷纷表示『好像很高级的样纸,

寒小阳 43万+

C#实战:手把手教你用SerialPort实现RS485 ModbusRTU通信(附完整代码)

本文详细介绍了如何使用C#的SerialPort类实现RS485 ModbusRTU通信,包括硬件准备、串口配置、数据收发核心逻辑及高级通信技巧。通过实战案例和完整代码,帮助开发者快速掌握工业级通信框架的构建方法,提升设备间通信的稳定性和效率。

weixin_29207533的博客 255

深入解析CRC-16校验算法及其Verilog硬件实现

本文深入解析了CRC-16校验算法的原理及其在Verilog中的硬件实现方法。从基础的模2除法到串行和并行实现方案,详细介绍了LFSR结构、状态转移分析以及工业应用中的优化技巧。通过实际案例和性能对比,帮助开发者理解如何选择适合的CRC实现方案,确保数据传输的可靠性。

yolo5detector的博客 322

STC8H单片机ADC实战:从读取电位器到串口绘图,12位精度玩起来

本文详细介绍了STC8H单片机的ADC功能实战应用,从读取电位器到串口绘图,展示了12位精度的实现方法。通过硬件连接、代码配置、串口数据传输及高级优化技巧,帮助开发者快速掌握ADC模块的使用,适用于各种传感器数据采集和信号处理场景。

weixin_28278377的博客 343

ETAS工具导入DBC生成Com协议栈

ETAS工具导入DBC主要也是生成arxml用的,ETAS推荐使用Cobra导入,本文介绍导入过程及注意事项不管是导入DBC还是arxml,本质上都是为了生成对应的com协议栈,目的是为了减少重复的工作量,所以,前期定义好收发的矩阵很重要,一般导入一次之后,后面就可以按变更点手动更改了。

赞的博客 1710

机器视觉应用工程师职位深度解析与面试指南

广东奥普特科技招聘机器视觉应用工程师,要求大专以上理工科专业背景,熟悉C/C++或PLC编程,具备自动化设备调试经验。岗位职责包括视觉项目方案评估、系统安装调试、售后技术支持及异常处理,需接受外派出差。该职位面向专业对口的应届生或实习生,强调动手能力、沟通技巧和吃苦耐劳精神。机器视觉工程师需掌握图像处理算法、硬件配置等核心技术,在工业自动化领域具有良好发展前景。求职者应注重编程能力和实践经验的积累,以胜任这一技术密集型岗位。

郑伟强dev的专栏 431

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: AOP编程详细解析
下一篇: WebService全面详解
巧笑情兮_美目盼兮
博客等级 码龄9年 181粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值