zoukankan      html  css  js  c++  java
  • 关于spring事务

    https://www.cnblogs.com/caoyc/p/5632963.html  这一篇博客讲的很清楚,一些参数和事务的概念

    在serveice层中  每个方法都要写上关于事务的注解。这两个最常用

    @Transactional(propagation = Propagation.SUPPORTS)

    @Transactional(propagation = Propagation.REQUIRED)


    7种配置的意思:

    REQUIRED: 支持当前事务,如果当前没有事务,就新建一个事务。
    SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
    MANDATORY: 支持当前事务,如果当前没有事务,就抛出异常
    REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
    NOT_SUPPORTED: 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
    NEVER: 以非事务方式执行,如果当前存在事务,则抛出异常
    NESTED: 支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务

    脏读:是指一个事务读取到了另一个事务未提交的数据。

    不可重复读:指一个事务读取时另一个事务可以修改数据。

    幻读:一个事务读取时另一个事务insert操作。

    这三类问题的解决方式就是依次提高数据库的事务隔离级别。

    参考博客:https://www.cnblogs.com/lomomiao/p/4223129.html

    什么是脏读?

    例如:

    张三的工资为5000,事务A中把他的工资改为8000,但事务A尚未提交。

    与此同时,

    事务B正在读取张三的工资,读取到张三的工资为8000。

    随后,

    事务A发生异常,而回滚了事务。张三的工资又回滚为5000。

    最后,

    事务B读取到的张三工资为8000的数据即为脏数据,事务B做了一次脏读。

    (大部分数据库缺省的事物隔离级别都不会出现这种状况)

    4. ISOLATION_REPEATABLE_READ  

    这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。

    什么是不可重复读?

    例如:

    在事务A中,读取到张三的工资为5000,操作没有完成,事务还没提交。

    与此同时,

    事务B把张三的工资改为8000,并提交了事务。

    随后,

    在事务A中,再次读取张三的工资,此时工资变为8000。在一个事务中前后两次读取的结果并不致,导致了不可重复读。

    (大部分数据库缺省的事物隔离级别都不会出现这种状况)

    5. ISOLATION_SERIALIZABLE

    这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻读。

    什么是幻读?

    例如:

    目前工资为5000的员工有10人,事务A读取所有工资为5000的人数为10人。

    此时,

    事务B插入一条工资也为5000的记录。

    这是,事务A再次读取工资为5000的员工,记录为11人。此时产生了幻读。

    (大部分数据库缺省的事物隔离级别都会出现这种状况,此种事物隔离级别将带来表级锁)

    说 明 :Oracle数据库缺省的事物隔离级别已经保证了避免脏读和不可重复读。但可能会幻读,避免幻读需要加表级锁,Oracle缺省行级锁。在基于 Spring的事物配置中一定要慎重使用ISOLATION_SERIALIZABLE的事物隔离级别。这种配置会使用表级锁,对性能影响巨大。一般没有 特殊需要的话,配置为使用数据库缺省的事物隔离级别便可。

  • 相关阅读:
    Selenium 2自动化测试实战
    Python学习笔记整理(python 3)
    Python编程中出现ImportError: bad magic number in 'numpy': b'x03xf3 '
    收集的一些表单常用的正则表达式。
    转载的一篇博客,感觉不错,自我感觉很到位,来自 http://www.cnblogs.com/laizhihui/p/5810965.html
    闲来无写的,就是中间有一条小细线,求大神指点。
    自己总结的有关PHP一些基本知识和一些常见的js问题
    不经意间看到的东西,感觉不错(转载)。
    无束缚版贪吃蛇(就问你爽不爽)
    小图局部放大效果(图片的话就自己找一个吧,记得是一张图片用两次,不是两张图片,而且你的图片不一定与我一样,需改一下放大的尺寸)
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/9270536.html
Copyright © 2011-2022 走看看