一、事物1、什么是事物

事物指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败

2、事物的特性

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

一致性:事物前后数据的完整性必须保持一致

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

持久性:一个事物一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。

二、事物的API介绍

Spring事物管理高层抽象主要包括3个接口:PlatformTransactionManager(事务管理器)、TransactionDefinition(事物定义信息)、TransactionStatus(事物具体运行状态)。

1、PlatformTransactionManager

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

2、TransactionDefinition(1)定义隔离级别

如果不考虑隔离性,会引发如下安全问题:脏读、不可重复读、幻读

脏读:一个事物读取了另一个事物改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。

不可重复读:在同一个事物中,多次读取同一数据返回的结果有所不同

幻读:一个事物读取了几行记录后,另一个事物插入一些记录,幻读就发生了,在后来的查询中,第一个事物就会发现有些原来没有的记录。

事物的隔离级别就是用来解决以上问题:

Mysql数据库用的是REPEATABLE_READ隔离级别

Oracle数据库用的是READ_COMMITTED隔离级别

(2)定义事物传播行为

三、实战

Spring支持俩种方式事务管理

--编程式的事务管理

◎在实际应用中很少使用

◎通过TransactionTemplate手动管理事物

--使用XML配置声明式事物

◎开发中推荐使用(代码侵入性最小)

◎Spring的声明式事物是通过AOP实现的

1、编程式事务管理

手动编写代码进行事物管理(很少使用)

(1)在AccountService中使用TransactionTemplate

(2)TransactionTemplate依赖DataSourceTransactionManager

(3)DataSourceTransactionManager依赖DataSource构造

2、声明式事务管理

(1)基于TransactionProxyFactoryBean的方式

缺点:每需要对一个类进行事物管理,就需要配置一次,维护不方便

(2)基于AspectJ的XML方式(经常使用)

3、基于注解的方式(经常使用)

在需要事物管理的类上面加上注解

最新文章

  1. [C++11][算法][穷举]输出背包问题的所有可满足解
  2. 【MySQL】事务没有提交导致 锁等待Lock wait timeout exceeded异常
  3. CodeForces 489B (贪心 或 最大匹配) BerSU Ball
  4. mysql数据库全局只读和会话只读问题解析
  5. 【实习记】2014-08-22试用SSH客户端XShell与SecuretyCRT与MobaXterm总结
  6. Demo_敌军坦克生成,坦克移动(可以拓展发射子弹,敌军消失获取分数或者添加动画,声音功能)
  7. 属性"XmlFileName"的代码生成失败
  8. iOS文档序列化(对象归档)
  9. 认识div在排版中的作用
  10. div使用
  11. ZAB协议与Paxos算法
  12. 12.Mysql存储过程和函数
  13. Luogu 2157 [SDOI2009]学校食堂 - 状压dp
  14. [UE4]移动设备贴图消失
  15. javascript数组元素的添加、删除与插入以及参数数组的使用
  16. SQL Server, Cannot resolve the collation conflict
  17. vue + element-ui 制作tab切换(切换vue组件,踩坑总结)
  18. 108th LeetCode Weekly Contest Binary Subarrays With Sum
  19. vue入门----------路由配置
  20. IOS NSBundle使用(访问文件夹)

热门文章

  1. android4.4系统解决“ERRORcouldn't find native method”方法
  2. 【HLSL学习笔记】WPF Shader Effect Library算法解读之[Embossed]
  3. FFmpeg来源简单分析:结构会员管理系统-AVClass
  4. Nginx http filter异常排查
  5. 潜移默化学会WPF(转载篇)--屏幕显示Label,鼠标移上去变成textBox
  6. 线程安全ConcurrentBag
  7. Qt SQLite 批量插入优化(SQLite默认将每条语句看成单独的事务)good
  8. C# .NET锁屏程序(顺带屏蔽任务管理器)
  9. 2018年Unity结合Android SDK下载安装及配置教程
  10. Hive-分组之后取前n个