1、事务概念
(1)什么是事务
*事务是操作数据库的最基本单元,逻辑上的一组操作,要么都成功,要么都失败,如果有一个失败那么全部失败
*典型场景:银行转账
(2)事务四个特性(ACID)
*原子性:要么都成功,要么都失败
*一致性:总量不发生变化
*隔离性:多个事务之间不相互影响
*持久性:数据库表中发生变化
2、事务操作(搭建事务环境)
(1)创建表,添加记录
(2)创建service搭建dao,完成对象创建和注入关系
*service注入dao,dao注入JDBCTemplate,在配置文件 JDBCTemplate注入DataSource
(3)在dao创建两个方法,多钱和少钱方法,在service创建一个转账方法
dao接口
dao接口实现类
srrvice
测试类
(4)如果出现异常怎么解决
*上面异常如何解决呢?
*使用事务
*事务的操作过程
3、事务操作(Spring事务管理介绍)
(1)事务添加到三层结构里面的Service层
(2)在Spring进行事务管理操作
*有两种方式:编程式事务管理和声明式事务管理(常用)
(3)声明式事务管理
*基于注解方式(使用)
*基于xml配置文件方式
(4)在spring进行声明式事务管理,底层原理AOP原理
(5)spring事务管理API
4、事务操作(注解声明式事务管理)
(1)在spring配置文件配置事务管理器
(2)声明事务的命名空间
(3)开启事务
(4)在service类上面或者类方法里面添加@Transactional事务注解
*如果添加到类上面则整个类都会开启事务
*添加到方法上面只有方法会开启事务
5、事务操作(声明式事务管理参数配置)
(2)Propagation:事务的传播行为
*多事务方法直接进行调用,这个过程中事务是如何管理的
(3)ioslation:事务隔离级别
*事务有特性成为隔离性,多事务之间不会产生影响。不考虑隔离性产生很多问题
*有三个读问题:脏读、不可重复读、虚(幻)读
虚读:一个未提交的事务,读取到另一个提交事务添加的数据
解决:通过设置隔离级别,解决读问题
(4)timeout:超时时间
*事务需要在一定时间内进行提交,如果不提交进行回滚
* 默认值是-1,设置时间单位以秒为单位
(5)readOnly:是否只读
*读:查询操作;写:添加修改删除操作
*readOnly默认值是false,表示可以查询添加修改删除操作
*设置readOnly是true,表示只能查询
(6)rollbackFor:回滚
*设置出现哪些异常,进行回滚
(7)noRollbackFor:不回滚
*设置出现哪些异常,不进行回滚
6、事务操作(XML声明式事务管理)
(1)在spring配置文件中进行配置
*配置事务管理器
*配置通知
*配置切入点和切面
7、事务操作(完全注解开发)
(1)创建一个config类
(2)加上注解
(3)测试类