发表于: 2018-01-20 22:02:32

1 500


今日完成的事情:

今天讲了小课堂,主要讲的是spring事务,下面简单的回顾一下:

1.背景介绍 

转账的案例:

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

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

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

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

事务是一系列的动作,它们综合在一起才是一个完整的工作单元,

这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。

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

2.知识剖析

事务有四个特性:

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

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

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

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

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

持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,

这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。事务传播行为

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

常见的事务传播行为

REQUIRED:

表示当前方法必须运行在一个事物环境中,如果一个现有的事物正在运行,

该方法将运行在这个事务中,否则,就要开始一个新的事务

REQUIRESNEW

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

 SUPPORTS

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

MANDATORY

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

NEVER

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

3.常见问题

有哪些方式实现事务管理>

4.解决方案

Spring 事务管理有两种方式

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

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

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

其主要思想是将事务管理作为一个“切面”代码单独编写,我们只用关心核心业务逻辑代码,

然后通过AOP技术将事务管理的“切面”代码织入到业务类中

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

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

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

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

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

明日计划的事情:

看基础,同时准备着进真实。

遇到的问题:

收获:

会使用简单的spring事务。



返回列表 返回列表
评论

    分享到