美文网首页
01.Spring事务

01.Spring事务

作者: Explorer_Mi | 来源:发表于2018-02-14 08:28 被阅读0次

1.事务的概念

事务值得是逻辑上的一组操作,这组操作要么全部成功,要么全部失败.

2.具体实例

1.场景-银行转账

一个转账过程
如果A给B转账期间,银行系统发生故障,就要保证A,B两者的财产不能出现任何损失.
所以转账的操作就要添加到事务中进行,必须一起成功,或者一起失败.

具体点就是,要么A给B成功转账,A少了3000元,B多了3000元,要么A没有给B转账成功,A没少一分钱,B没多一分钱.

2.事务的特性

总的来讲分为4类特性

原子性
一致性
隔离性
持久性

1.原子性

原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生.

具体就是上面的例子.

2.一致性

一致性指事务前后数据的完整性必须保持一致.

实例:就是说A和B转账操作完成之前和之后,A,B两者的存款之和,没有任何变化.

3.隔离性

隔离性指的是指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰.多个并发的事务之间的数据要相互隔离.

实例:


A正在被一个事务进行更新操作,另外一个事务也进行对A对象的更新操作,这样就导致第一个事务对A的修改,被第二个事务对A的修改给覆盖,修改记录被覆盖掉了,为了避免这种情况,所以事务执行期间,必须要有隔离性.

4.持久性

持久性是指一个事务一旦被提交,他对数据库中的修改就是永久性的,即使数据库发生故障也不对其出现任何影响.

3.Spring中的事务管理

Spring事务管理主要有三个接口

1. platfromTransactionManager
2. TransactionDefinition
3. TransactionStatus

1.platfromTransactionManager

Spring为不同的持久化框架提供了不同的PlatfromTransactionManager接口实现


2.TransactionDefinition

事务定义信息(隔离级别,传播,超时,只读)

可预见的安全性问题包括:脏读,幻读,不可重复读

1.脏读
一个事务读取了另外一个事务改写但没有提交的数据,如果这些数据被回滚,则读到的数据是无效的.

2.不可重复读
在同一事务中,多次读取同一数据返回的结果有所不同.

3.幻读
一个事物读取了几行记录之后,另一个事务插入一些记录,幻读就会产生.

再后来的查询中,第一个事务就会发现有些原来没有的记录,

隔离级别:读未提交,读已提交,可重复读,可串行化.

1.隔离级别的划分(安全等级升序)

2.事务的传播行为

主要用来解决服务器端的SERVICE&&DAO的一些问题.

图示:

相关文章

网友评论

      本文标题:01.Spring事务

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