Spring中的事务隔离级别的介绍

 更新时间:2019年01月05日 15:54:15   作者:李灿辉  
今天小编就为大家分享一篇关于Spring中的事务隔离级别的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

spring事务:

什么是事务:

事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败.

事务特性(4种):

  • 原子性 (atomicity):强调事务的不可分割.
  • 一致性 (consistency):事务的执行的前后数据的完整性保持一致.
  • 隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰
  • 持久性(durability) :事务一旦结束,数据就持久到数据库

解决读问题: 设置事务隔离级别(5种)

  • DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
  • 未提交读(read uncommited) :脏读,不可重复读,虚读都有可能发生
  • 已提交读 (read commited):避免脏读。但是不可重复读和虚读有可能发生
  • 可重复读 (repeatable read) :避免脏读和不可重复读.但是虚读有可能发生.
  • 串行化的 (serializable) :避免以上所有读问题.

Mysql 默认:可重复读

Oracle 默认:读已提交

事务隔离级别定义一个事务可能受其他事务并发活动的影响程度。另一个考虑事务隔离级别的角度,是把它想象为事务对于它处理的数据的自私程度。

事务的隔离要解决的问题有3个:

  • 1,脏读,即一个事务读到另一个事务还没有提交的数据。如果另一个事务失败了,回滚了,那么第一个事务读到的数据就是无效的数据。这就是脏读。
  • 2,不可重复读,不可重复读发生在一个事务里两次查询同一个数据,发现查询结果不一样。这是因为在该事务的两次查询之间,有另一个事务更新了该数据。
  • 3,幻读,幻读和不可重复读比较类似。当一个事务t1,第一次查询了一些行,第二次又查询了一些行,发现两次查询出来的行个数不一样,或者多了一些行,或者少了一些行,好像出现了幻觉一样。这是因为在两次查询之间,有另一事务更新了符合第一个事务查询条件的行。

对比不可重复读和幻读,就可以很好的理解它们的区别。不可重复读针对的是一行或者说一个数据,而幻读针对的是多行数据。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • springboot+vue2+elementui实现时间段查询方法

    springboot+vue2+elementui实现时间段查询方法

    这篇文章主要介绍了springboot+vue2+elementui实现时间段查询方法,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • Java判断线程池线程是否执行完毕

    Java判断线程池线程是否执行完毕

    这篇文章主要介绍了Java判断线程池线程是否执行完毕,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • IDEA之如何关闭/开启引用提示Usages

    IDEA之如何关闭/开启引用提示Usages

    这篇文章主要介绍了IDEA之如何关闭/开启引用提示Usages问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • RocketMq事务消息发送代码流程详解

    RocketMq事务消息发送代码流程详解

    这篇文章主要介绍了RocketMq事务消息发送代码流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java实现队列的N种方法

    Java实现队列的N种方法

    在Java中,我们可以使用不同的方式来实现队列,本文主要介绍了Java实现队列的N种方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • NoHttpResponseException问题分析解决记录

    NoHttpResponseException问题分析解决记录

    这篇文章主要为大家介绍了NoHttpResponseException问题分析解决记录,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 如何使用Comparator比较接口实现ArrayList集合排序

    如何使用Comparator比较接口实现ArrayList集合排序

    这篇文章主要介绍了如何使用Comparator比较接口实现ArrayList集合排序问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Java如何连接数据库图文教程

    Java如何连接数据库图文教程

    关于java数据库的文章早已是非常多了,本文是对我个人过往学习java数据库,理解及应用java数据库的一个总结,下面这篇文章主要给大家介绍了关于Java如何连接数据库的相关资料,需要的朋友可以参考下
    2023-04-04
  • mybatisplus开启sql打印的三种方式汇总

    mybatisplus开启sql打印的三种方式汇总

    这篇文章主要介绍了mybatisplus开启sql打印的三种方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • springboot如何配置允许跨域访问

    springboot如何配置允许跨域访问

    这篇文章主要介绍了springboot如何配置允许跨域访问,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08

最新评论