Spring--事务管理

事务

1. 事务概念

事务是数据库操作最基本单元,逻辑上是一组操作,要么成功,如果有一个失败所有的操作都失败

2. 事务的四个特性(ACID)

  1. 原子性 (要么都成功,要么都失败)
  2. 一致性 (操作之前操作之后,总量不变)
  3. 隔离性 (多事务之间进行操作,互相不影响)
  4. 持久性 (提交之后,数据发生变化)

3. 事务操作过程

  1. 开启事务

  2. 进行业务操作

  3. 没有异常,提交事务

  4. 出现异常,事务回滚

4.声明式事务管理

  1. 基于注解方式
  2. 基于xml方式
  3. 底层使用AOP原理

5. 基于注解方式操作步骤

  1. 在spring配置文件中配置事务管理器

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManage">
    <!-- 注入数据源-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    
  2. 在spring配置文件,开启事务注解

    • 在spring配置文件中引入命名空间 tx

    • 开启事务注解

      <tx:annotation-driven transaction-manage="transactionManager"></tx:annotation-driven>
      
  3. 在service类上面(或者类方法上面)添加事务注解

    • @Transactional 这个注解添加到类上面,也可以添加到方法上面
    • 添加到类上面,所有的方法都添加事务。
    • 添加到方法上面,只有这个方法添加事务。

6.声明式事务管理参数配置

在service类上面添加注解@Tansactional,在这个注解里面可以配置参数

6.1 propagation

事务传播行为

  1. 多事务方法

  2. 事务方法: 对数据库数据进行变化的操作

  3. Spring框架事务传播行为有7种

    • REQUIRED: 如果add方法本身有事务,调用其他方法,其他方法使用当前add方法里面的事务

      如果add方法本身没有事务,调用其他方法,创建新事务

    • REQUIRED_NEW: 不管方法中是否有事务,创建新事务。

6.2 ioslation 事务隔离级别
  1. 事务有特性称为隔离性,多事务操作之间不会产生影响,不考虑隔离性会产生很多问题

  2. 三个问题: 脏读,不可重复读,虚读

  3. 脏读: 一个未提交的事务读取到另一个未提交事务的数据

    • A B都要读取数据 B先开启事务,并对数据进行修改,A又读取数据,然而B还未提交,B回滚,数据恢复,A读取到的数据错误
  4. 不可重复读:一个未提交事务读取到另一个提交事务修改数据。

    • A B都要读取数据,B先开启事务,读取数据,并对数据进行修改,提交。A后读取
  5. 虚读:一个未提交的事务读取到另一个已提交的事务增加的数据。

  6. 事务的隔离级别:

    脏读不可重复读幻读
    READ UNCOMMITTED(读未提交)
    READ COMMITTED(读已提交)
    REPEATABLE READ (可重复读)
    SERIALIZABLE (串行化)
6.3 timeout 超时时间
  1. 事务需要在一定时间内进行提交,如果不提交进行回滚
  2. 默认值是 -1 设置时间以秒为单位计算
6.4 readonly 是否只读
  1. 读: 查询操作 写 添加修改删除操作
  2. readonly默认值是false 表示可以查询,可以添加修改删除操作
  3. 设置readonly值为true,设置成true之后,只能查询
6.5 rollbackFor 回滚
  1. 设置出现哪些异常进行事务回滚
6.6 noRollbackFor 不回滚
  1. 设置出现哪些异常不进行事务回滚
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值