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方式

七、事务操作——完全注解声明式事务管理