(一)、什么是事务
- 事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,要么都失败,如果有一个失败所有操作都失败
- 典型场景: 银行转账
- 事务四大特性(ACID):
- 原子性: 不可分割,要么都成功,要么都失败
- 一致性:操作之前和操作之后总量不变
- 隔离性:两个事务之间互不影响
- 持久性:数据放入到数据库中,不会发生变化
(二)、事务场景引入
在转账的时候,一个用户钱增加,一个用户钱减少。那么如果在此期间发生了异常,一个用户钱少了,另一个人的钱却没有增加,这样违反了事务的一致性
(三)、Spring事务管理
(1)、事务加到哪一层合适
一般service层,当然,其它层也可以
(2)、在Spring进行事务管理操作
编程式事务管理,声明式事务管理(使用)
编程式事务管理是try{}catch{},然后成功提交,失败回滚
声明式事务管理
1. 基于注解
2. 基于xml方式
(3)、过程
1. 在spring配置文件中配置事务管理器
2. 在spring配置文件中,开启事务
1)、在spring配置文件中引入名称空间tx
2)、 开启事务注解
3)、在service类上面(获取service类里面方法上面)添加事务注解
@Transcational,这个注解添加到类上面,也可以添加方法上面
如果添加到类上面,这个类里面所有的方法都添加事务
如果添加方法上面,只是为方法添加事务
注意,添加事务注解之后,刚开始异常处理就不需要了
===================================
4)、事务参数(传播行为)
propagation: 事务的传播行为
--------------------------------------------
(五)、事务参数-隔离级别
隔离级别: isolation
隔离性: 多事务操作之家你不会产生影响,不考虑隔离性产生很多问题
脏读,数据丢失,不可重复读,幻读。
(六)、事务参数---其他参数
timeout: 超时时间 : 事务需要在一定的时间内需要提交,如果不提交,则做事务的回滚
默认为 -1 ,不超时 。不过可以设置,单位是s
readonly: 是否只读 : 默认值是false。表示可以查询,可以添加修改删除操作
设置为true之后,只能查询
rollbackFor: 回滚
(1)设置出现哪些异常进行事务的回滚
(2)设置出现哪些异常不进行回滚