目录
1..在service类上添加注解@Transactional,可以配置以下参数
什么是事务
1.事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败,则所有操作都失败
2.典型场景:银行转账
事务四个特性 (ACID)
1.原子性
2.一致性
3.隔离性
4.持久性
事物操作(搭建环境)
1.创建数据库表,添加记录
2. 创建service,搭建dao ,完成对象创建和注入关系
1》service注入dao,在dao中注入jdbxTemplate,在jdbxTemplate注入DateSource
Service
dao
配置文件
3.dao中的两个方法,在service中创建转账方法
dao接口
dao实现类
service
测试
4.上面代码正常没问题,出现异常,会有问题
1)使用事务来解决问题
事物操作(实现)
1.事物添加到JavaEE三层结构的Service层(业务层)
2.在Spring中进行 事务管理操作
(1)有两种方式:编程式事务管理 / 声明式事物管理(常用)
3.声明式事物管理
1》基于注解(常用)
2》基于配置文件
4.声明式事物管理,底层使用AOP
5.事物管理常用API
1》提供一个接口,代表事物管理器,这个接口针对不同的框架提供不同的实现类
事务操作(注解声明式事物管理)
1.在Spring配置文件中配置事物管理器
2.在Spring配置文件开启事务注解
1》Spring配置文件引入名称空间 tx
2》开始事务注解
3.在service类上或方法上添加注解
1》 @Transactional,这个注解可以添加的类或方法上
2》添加到类上,类中的所有方法都添加了注解
3》添加到方法上,只为该方法添加注解
事务操作(声明式事物管理参数配置)
1..在service类上添加注解@Transactional,可以配置以下参数
2.propagation: 事务传播行为
1》多事务方法直接进行调用,这个过程中如何进行事务管理
演示
3. ioslation:事物隔离级别
1》事务有特性成为隔离性 ,多事务操作之间不会产生影响,不考虑隔离性产生很多为题
2》三个读问题:脏读、不可重复读、虚读
3》脏读:一个未提交事事务读取到另一个未提交事务的数据
4》不可重复读:一个未提交事务读取到另一个提交事务修改数据
5》虚读:一个未提交事务读取到另一个提交事务添加数据
6》通过设置事务隔离性,来解决问题
演示
mysql默认 REPEATABLE READ
4.timeout:超时时间
1》事务要在一定时间内进行提交,如果不提交,进行回滚
2》默认值为-1,设置时间以秒为单位
5.readOnly:是否只读
1》读:查询操作,写:添加修改删除操作
2》readOnly默认值false,表示可以查询,可以添加修改删除操作
3》设置readOnly值为ture,只能查询
6.rollbackFor:回滚
设置出现那些异常进行回滚
7.noRollbackFor:不回滚
设置出现那些异常不进行回滚
事务管理基于xml配置文件
1.在Spring配置文件中进行配置
1》配置事务管理器
2》配置通知
3》配置切入点和切面
事务操作 完全注解