1、什么是事务
(1)事务是数据库 *** 作的最基本的单元,逻辑上的一组 *** 作,要么都成功,如果有一个失败则所有的 *** 作都失败
(2)典型场景:银行转账
2、事务四个特性(ACID)
(1)原子性
(2)一致性
(3)隔离性
(4)持久性
事务 *** 作(搭建事务 *** 作的环境)
1、创建数据库表,添加记录
2、创建service,搭建dao,完成对象创建和注入关系
(1)service注入dao,在dao注入JdbcTemplate,在JdbcTemplate注入DataSource
3、在dao创建两个方法:多钱和少钱的方法,在service创建方法(转账的方法)
4、上面代码,如果正常执行没有问题,但是如果代码在执行过程中出现异常,有问题
(1)如何解决问题?
* 使用事务进行解决
(2)事务 *** 作基本过程
事务 *** 作(Spring 事务管理介绍)1、事务添加到JavaEE三层结构里面Service层(业务逻辑层)
2、在Spring进行事务管理 *** 作
(1)有两种方式:编程式事务管理和声明式事务管理(使用)
3、声明式事务管理
(1)基于注解方式(使用)
(2)基于xml配置文件方式
4、在Spring进行声明式事务管理,底层使用AOP原理
5、Spring事务管理API
(1)提供了一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类
事务 *** 作(注解声明式事务管理)1、在Spring的配置文件中配置事务管理器
2、在Spring配置文件,开启事务注解
(1)在Spring配置文件中引入名称空间tx
(2)开启事务注解
3、在service类上面(或者service类里面方法上面)添加事务注解
(1)@Transactional,这个注解添加到类上面,也可以添加到方法上面
(2)如果把这个注解添加到类上面,这个类里面所有的方法都添加事务
(3)如果把这个注解添加到方法上面,为这个方法添加事务
事务 *** 作(声明式事务管理参数配置)1、在service类上面添加注解@Transactional,在这个注解里面可以配置事务相关参数
2、propagation:事务传播行为
(1)多事务方法之间进行调用,这个过程中事务是如何进行管理的
事务的传播行为可以由传播属性指定。Spring定义了7种类传播行为。
3、isolation:事务隔离级别
(1)事务有特性称为隔离性,多事务 *** 作之间不会产生影响。不考虑隔离性,会产生很多问题。
(2)有三个读的问题:赃读、不可重复读、幻读
(3)赃读:一个未提交的事务读取到了另一个未提交事务的数据
(4)不可重复读:一个未提交的事务读取到另一个提交事务修改数据
(5)幻读:一个未提交事务读取到另一个提交事务添加数据
(6)解决:通过设置事务的隔离级别,解决读问题。
4、timeout:超时时间
(1)事务需要在一定的时间内进行提交,如果不提交进行回滚
(2)默认值是-1(不超时),设置时间以秒为单位进行计算
5、readOnly:是否只读
(1)读:查询 *** 作,写:添加修改删除 *** 作
(2)readOnly默认值是false,表示可以进行添加修改删除 *** 作
(3)设置readOnly值为true,只能查询。
6、rollbackFor:回滚
(1)设置出现哪些异常进行事务回滚
7、noRollbackFor:不回滚
(1)设置出现哪些异常不进行事务回滚
事务 *** 作(XML声明式事务管理)1、在Spring配置文件中进行配置
第一步:配置事务管理器
第二步:配置通知
第三步:配置切入点和切面
事务 *** 作(完全注解声明式事务管理)1、创建配置类,使用配置类替代xml文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)