Spring事物管理简介 (转)
2020-12-13 02:32
标签:回滚 mysql comm mamicode 需要 基于 持久化 不同的 管理器 一、事物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、基于注解的方式(经常使用) 在需要事物管理的类上面加上注解 Spring事物管理简介 (转) 标签:回滚 mysql comm mamicode 需要 基于 持久化 不同的 管理器 原文地址:https://www.cnblogs.com/guanbin-529/p/11042717.html