zoukankan      html  css  js  c++  java
  • SPRING 事务管理说明

    spring 事务管理是通过AOP拦截指定的方法,进行事务管理。

    事务配置

    <aop:config proxy-target-class="true">
            <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.redxun.*.*.manager..*(..))" />
    </aop:config>
    
    <tx:advice id="txAdvice" transaction-manager="jpaTranManager">
            <tx:attributes>
                <tx:method name="genSequenceNo" propagation="REQUIRES_NEW" isolation="READ_COMMITTED"/>
                <tx:method name="del*" propagation="REQUIRED" isolation="READ_COMMITTED" />
                <tx:method name="add*" propagation="REQUIRED" isolation="READ_COMMITTED" />
                <tx:method name="*" propagation="REQUIRED" />
            </tx:attributes>
    </tx:advice>
    pointcut:切入点
    tx:method: 对事务方法定义
    参数名 备注
    name 
    定义事务的方法名称,名称可以支持通配符

    propagation
    事务传播性
    isolation
     事务隔离级别
    readonly
    事务是否只读

    事务传播性:

    propagation_requierd:如果当前没有事务,就新建一个事务,如果已存在一个事务中,加入到这个事务中,这是最常见的选择。
    propagation_supports:支持当前事务,如果没有当前事务,就以非事务方法执行。
    propagation_mandatory:使用当前事务,如果没有当前事务,就抛出异常。
    propagation_required_new:新建事务,如果当前存在事务,把当前事务挂起。
    propagation_not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
    propagation_never:以非事务方式执行操作,如果当前事务存在则抛出异常。
    propagation_nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作

    事务隔离级别:

    read uncommited:是最低的事务隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。
    read commited:保证一个事物提交后才能被另外一个事务读取。另外一个事务不能读取该事物未提交的数据。
    repeatable read:这种事务隔离级别可以防止脏读,不可重复读。但是可能会出现幻象读。它除了保证一个事务不能被另外一个事务读取未提交的数据之外还避免了以下情况产生(不可重复读)。
    serializable:这是花费最高代价但最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读之外,还避免了幻象读。

    脏读、不可重复读、幻象读概念说明:
    脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种数据还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据还没有提交那么另外一个事务读取到的这个数据我们称之为脏数据。依据脏数据所做的操作肯能是不正确的。
    不可重复读:指在一个事务内,多次读同一数据。在这个事务还没有执行结束,另外一个事务也访问该同一数据,那么在第一个事务中的两次读取数据之间,由于第二个事务的修改第一个事务两次读到的数据可能是不一样的,这样就发生了在一个事物内两次连续读到的数据是不一样的,这种情况被称为是不可重复读。
    幻象读:一个事务先后读取一个范围的记录,但两次读取的纪录数不同,我们称之为幻象读(两次执行同一条 select 语句会出现不同的结果,第二次读会增加一数据行,并没有说这两次执行是在同一个事务中)

    readonly

    是否只读,设置了这个属性为true,那么这个链接为只读,不允许数据编辑。

  • 相关阅读:
    luogu 1865 数论 线性素数筛法
    洛谷 2921 记忆化搜索 tarjan 基环外向树
    洛谷 1052 dp 状态压缩
    洛谷 1156 dp
    洛谷 1063 dp 区间dp
    洛谷 2409 dp 月赛题目
    洛谷1199 简单博弈 贪心
    洛谷1417 烹调方案 dp 贪心
    洛谷1387 二维dp 不是特别简略的题解 智商题
    2016 10 28考试 dp 乱搞 树状数组
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/9769788.html
Copyright © 2011-2022 走看看