关于事务的五大知识点

  1. 什么是事务

    1. 事务就是一次不可再分的操作
  2. 事务的四大特性是什么

    1. 原子性

      1. 一次不可再分的操作,事务中包含的操作 要成功都成功,要失败都失败
    2. 隔离性

      1. 一个事务不能被另外一个事务 干扰
    3. 持久性

      1. 事务的提交,对那么数据的操作就是永久性的
    4. 一致性

      1. 事务对数据的改变必须是从一个一致状态到另一个一致状态的改变
  3. 事务的隔离级别

    1. 读取已提交数据

      1. 会出现不可重复读和幻读

    2. 读取未提交数据

      1. 会出现脏读,不可重复读(基本不再使用)

    3. 可重复读(默认为可重复读)

      1. 会出现幻读
    4. 串行化

  4. 事务的并发状态下会出现哪些问题

    1. 脏读

      1. 一个事务读到另一个事务未提交更新的数据 

        1. [B事务提交数据 ,A事务查询,B事务回滚 A事务再次查询 A事务发现两次查询结果不一致]

    2. 幻读

      1. 一个事务读取到另一个事务已提交的 插入/删除的数据

        1. ​​​​​​​[A事务查询,B事务插入或者删除,A事务再次查询 发现两次查询的数据结果不一致]

    3. 不可写重复读

      1. ​​​​​​​​​​​​​​一个事务读取到另一个事务已提交的更新数据

        1. [A事务查询,B事务更新,A事务再次查询 发现两次查询结果不一致]

    4. ​​​​​​​丢失更新

      1. ​​​​​​​一个事务的撤销把其他事务的更新提交数据覆盖掉

        1. [A事务更新数据,B事务在A事务后也去更新数据该数据,A事务回滚,然后把B事务更新的数据也回滚掉了]

    5. 覆盖更新

      1. 一个事物的提交把其他事务已提交更新数据覆盖掉

        1. ​​​​​​​[A事务更新, B事务也去对该条数据更新,A事务发现自己更新的数据被覆盖掉了]

  5. 在Spring中事务有哪些传播行为

    1. Transactional(propagation=Propagation.REQUIRED)    :如果有事务,    那么加入事务,    没 有的话新建一个(默认情况下) 

    2. @Transactional(propagation=Propagation.NOT_SUPPORTED)    :容器不为这个方法开启 
      事务 
    3. @Transactional(propagation=Propagation.REQUIRES_NEW)    :不管是否存在事务,都创建 
      一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务 
    4. @Transactional(propagation=Propagation.MANDATORY)    :必须在一个已有的事务中执 
      行,否则抛出异常 
    5. @Transactional(propagation=Propagation.NEVER)    :必须在一个没有的事务中执行,否则 
      抛出异常(与  Propagation.MANDATORY 相反) 
    6. @Transactional(propagation=Propagation.SUPPORTS)    :如果其他  bean  调用这个方法, 
      在其他  bean 中声明事务,那就用事务.如果其他  bean  没有声明事务,那就不用事务.

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值