spring事务

作者: 肥胖症患者 | 来源:发表于2018-01-21 19:50 被阅读5次

大家好,我是IT修真院深圳分院java第4期学员,一枚正直善良的java程序员。今天给大家分享一下,简单的spring事务。

1.背景介绍

转账的案例

理解事务之前,先讲一个你日常生活中最常干的事:转账。

张三给李四转账100元。那数据库假设需要 张三扣100,李四加100,记录一条流水。

如果流水没记录成功,那整体回滚,张三也没转账成功,李四也没多钱。

事务就是用来解决类似问题的。

事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。

在企业级应用程序开发中,事务管理必不可少的技术,用来确保数据的完整性和一致性。

2.知识剖析

事务有四个特性:ACID

原子性(Atomicity):事务是一个原子操作,由一系列动作组成。

事务的原子性确保动作要么全部完成,要么完全不起作用。

一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,

而不会是部分完成部分失败。在现实中的数据不应该被破坏。

隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。

持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。

事务传播行为

事务规则也就是事务传播行为,用于解决业务层方法之间的相互调用的问题

常见的事务传播行为

REQUIRED:

表示当前方法必须运行在一个事物环境中,如果一个现有的事物正在运行,该方法将运行在这个事务中,否则,就要开始一个新的事务

REQUIRESNEW

表示当前方法必须运行在自己的事务里

SUPPORTS

表示当前方法不需要事务处理环境,但如果有一个事务正在运行的话,则这个方法也可以运行在这个事务中

MANDATORY

表示当前方法必须运行在一个事务上下文中,否则就抛出异常

NEVER

表示当前方法不应该运行在一个事务上下文中,否则就抛出异常

3.常见问题

有哪些方式实现事务管理

4.解决方案

Spring 事务管理有两种方式

一种是编程式事务管理,即通过编写代码实现事物管理,

包括定义事务的开始,程序正常执行后的事物提交,异常时进行的事务回滚。

另一种是基于AOP技术实现的声明式事务管理

其主要思想是将事务管理作为一个“切面”代码单独编写,我们只用关心核心业务逻辑代码,然后通过AOP技术将事务管理的“切面”代码织入到业务类中

声明式事务管理有包括基于AOP方式的事务管理和基于 @Transactional注解方式的事务管理

声明式事务管理极大的简化了编程式事务管理的操作流程,不再需要重复地执行定义事物的开始,

程序正常执行后事务提交,异常时进行事物回滚这些繁琐的操作,

而基于 @Transactional注解的声明式事务又进一步简化了基于AOP的事务管理,减少了Spring配置代码。

声明式事务的缺点在于只能作用到方法级别,无法做到像编程式事务那样能控制到代码块级别。

5.编码实战

。。。

6.扩展思考

。。。

7.参考文献

8.更多讨论

PPT链接:戳这里

腾讯视频:戳这里

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树。IT修真学院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

相关文章

  • 关于事务的思考

    Spring对于事务的支持 Spring事务接口 Spring事务管理器 Spring并不直接管理事务,而是提供多...

  • Spring事务

    Spring 事务 分类 Spring可以支持编程式事务和声明式事务。 编程式事务 实现 Spring使用事务管理...

  • Spring中实现事务方式

    Spring 中实现事务的方式 Spring 并不直接支持事务,只有当数据库支持事务时,Spring 才支持事务,...

  • Spring事务的传播特性引发的一场血案

    Spring事务的传播特性是对于Spring事务管理的一项特殊配置;Spring事务基于Spring AOP特性,...

  • Spring 事务实现分析

    1. Spring 事务简介 Spring 本身并不实现事务,Spring事务 的本质 还是 底层数据库 对事务的...

  • spring04

    Spring JdbcTemplate学习 Spring 声明式事务 xml配置实现 Spring 声明式事务 注...

  • 程序员之Spring

    1. Spring事务 spring的事务实现原理Spring事务将connection放入到当前线程的threa...

  • 面前温习

    Spring事务传播特性的浅析——事务方法嵌套调用的迷茫 解惑 spring 嵌套事务

  • 分布式事务(2)Spring事务

    2.1 Spring事务原理 Spring支持编程式事务和声明式事务。编程式事务就是用个事务类Transactio...

  • spring事务的实现原理

    spring实现事务的原理 Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring...

网友评论

    本文标题:spring事务

    本文链接:https://www.haomeiwen.com/subject/ueuqaxtx.html