Spring之事务管理总结

什么是事务

  •         在数据库 一组操作中 要么全部成功 要么全部失败 简单说 就是增删改查 要么全部成功 要么全部失败

事务有什么特性ACID

  •  原子性:原子性不可分割 整个操作要么都成功 要么都失败
  • 一致性:数据 事务前后的数据保持一致
  • 持久性:指事务一旦被提交 就无法被修改
  • 隔离性:两个事务之间 并发访问的情况

        

隔离有什么问题

  • 脏读:一个事务读到另一个事务没有提交的数据
  • 不可重复读:一个事务读到另一个事务已经提交的事务(update)
  • 幻读:一个事务读到另一个事务已经提交的事务(insert)

 隔离级别有哪些

  • 读未提交:一个事务读到另一个事务没有提交的数据(存放3个问题 解决0个问题)
  • 读已提交:一个事务读到另一个事务已经提交的数据(存放2个问题 解决1个问题 脏读)
  • 可重复读:在一个事务中读到的数据是重复的(存放1个问题 解决2个问题 脏读 不可重复读)
  • 串行化:单事务(存放0个问题 解决3个问题 脏读 不可重复读 幻读)

对比:

        性能:读未提交  >  读已提交  >  可重复读  >  串行化

        安全:串行化  <  可重复读  <  读已提交  <  读未提交

默认隔离级别:

        ——mysql:可重复读

        ——Oracle:读已提交(Oracle有自己的一套安全管理事务)

事务管理平台管理器【重点】

在spring-tx里面有一个事务管理平台管理器中 有一个getTransaction方法 参数是一TransactionDefinition事务定义

 事务定义中有隔离级别 传播行为等

什么是传播行为?

        一个事务调用另一个事务 事务共享问题

具体的事务传播行为:【Spring学习34】Spring事务(4):事务属性之7种传播行为_程序老兵的博客-CSDN博客事务传播行为什么叫事务传播行为?听起来挺高端的,其实很简单。 即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。 例如:methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个https://blog.csdn.net/soonfly/article/details/70305683?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163853586116780357245908%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163853586116780357245908&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-70305683.pc_search_result_control_group&utm_term=%E4%BA%8B%E5%8A%A1%E4%BC%A0%E6%92%AD%E8%A1%8C%E4%B8%BA&spm=1018.2226.3001.4187

posted @ 2022-11-09 08:14  陶然同学  阅读(29)  评论(0编辑  收藏  举报