一、事务概念
1.什么是事务?
事务是数据库操作的最基本单元,逻辑上的一组操作,要么成功,要么都失败。
2.事务的四个特性(ACID)
(1)原子性:事务中包含的程序作为数据库的逻辑工作单元,它所做的对数据库的操作要么全部成功,要么完全不执行;
(2)一致性:在一个事务单元执行之前和执行之后数据库都必须处于一致性状态;例如数据库的状态满足所有的完整约束;
(3)隔离性:一个事务内部的操作以及正在操作的数据必须封锁起来,不被其他企图进行修改的事务看到;
(4)持久性:当系统或介质发生故障时,确保已经提交的事务的更新不能丢失。
二、事务管理
1.事务操作添加到JavaEE三层结构的Service层(业务逻辑层);
2.在Spring中有两种方式实现实现事务管理操作:编程式事务管理和声明式事务管理(常用)
3.声明式事务管理分为:基于注解的方式(常用)和基于XML配置文件方式
4.声明式事务管理,底层使用AOP原理
5.Spring事务管理API:
提供一个接口PlatformTransactionManager,代表事务管理器,这个接口针对不同的框架提供不同的实现类;
三、事务操作 (注解方式实现声明式事务管理)
1.配置事务管理器
2.在Spring配置文件中,开启事务注解
①在Spring配置文件中引入名称空间TX
②开启事务注解
③在service类或者事务管理的方法上添加注解
注解添加到类上,类中的所有方法都开启事务管理;添加到方法上,只是该方法开启事务管理;
四、事务操作 (注解方式实现声明式事务管理:参数配置)
1.在service类上添加注解@Transactional,在注解中配置相关参数
(1)propagation:事务传播行为
①多事务方法直接进行调用,这个过程中事务是如何进行管理的。
②事务的传播行为有7中方式:
③默认参数
(2)isolation:事务隔离级别
①事务会出现的读的问题:
脏读:一个未提交的事务读取到了另一个未提交的事务的数据
不可重复读:一个未提交的事务读取到了另一个提交的事务修改的数据
幻读:一个未提交的事务读取到了另一个提交的事务添加的数据
②四种隔离级别
③默认参数
(3)timeout:超时时间 事务需要在一定时间内进行提交,如果不提交进行回滚;默认值-1,设置时间以秒为单位
(4)readOnly:是否只读
读是查询操作;写是修改删除添加操作;默认值为false,表示可以查询和修改删除添加操作;当设置为true时,只能做查询操作!
(5)rollbackFor:回滚
设置出现哪些异常,进行回滚
(6)noRollbackFor:不回滚
设置出现哪些异常,不进行回滚
五、事务操作 (完全注解方式实现声明式事务管理)
配置类的写法
原文:https://www.cnblogs.com/taozhiyaoyao99/p/15138239.html