Spring5——事务操作
Spring5——事务操作
一、事务概念
- 事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败。
- **事务四个特性(ACID)**:
- 原子性。
- 一致性。
- 隔离性。
- 持久性。
二、模拟事务操作环境
- 创建service,搭建dao,完成对象创建和注入关系。
- 在dao创建两个方法:多钱和少钱的方法, 在service创建转账的方法。
三、Spring事务管理概念
- 事务添加到JavaEE三层结构里面Service层(业务逻辑层)。
- 在Spring进行事务管理操作有两种方式:
- 编程式事务管理。
- 声明式事务管理(推荐使用)。
- 声明式事务管理:
- 基于注解方式(推荐使用)。
- 基于xml配置文件方式。
- 在Spring进行声明式事务管理,底层使用AOP原理。
- Spring事务管理API:提供一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类。
四、声明式事务管理——注解方式
- 在Spring配置文件配置事务管理器。
- 在Spring配置文件,开启事务注解,引入名称空间。
- 开启事务注解。
五、声明式事务管理参数配置
- Transactional事务传播行为:
- 在service类上面添加注解@Transactional,在这个注解里面可以配置事务相关参数。
- propagation(事务传播行为):多事务方法直接进行调用,这个过程中事务是如何进行管理的。
- spring框架事务传播行为有七种:下面只介绍常用的两种传播行为。
ioslation(事务隔离级别):
- 事务有特性成为隔离性,多事务操作之间不会产生影响。不考虑隔离性产生很多问题。
- 有三个读问题:脏读、不可重复读、虚读。
- 解决:通过设置事务隔离级别,解决读问题。
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.REPEATABLE_READ)
。
timeout(超时时间):
- 事务需要在一定时间内进行提交,如果不提交进行回滚。
- 默认值是-1(不超时),设置时间以秒单位进行计算。
readOnly(是否只读):
- 读:查询操作,写:添加修改删除操作。
- readOnly默认值false,表示可以查询,可以添加修改删除操作。
- 设置readOnly值是true,设置成true之后,只能查询。
rollbackFor(回滚):设置出现哪些异常进行事务回滚。
noRollbackFor(不回滚): 设置出现哪些异常不进行事务回滚。
六、声明式事务管理——XML方式
七、事务操作——完全注解声明式事务管理
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.