zoukankan      html  css  js  c++  java
  • Spring事物

    Spring事务传播属性(7种)

    •  REQUIRED 业务方法需要在一个事务中运行。如果方法运行时 ,已经处在一个事务中 ,那么加入到这个事务中 ,否则自己创建一个事务。 (默认)。

    •  NOT-SUPPORTED 声明方法需要事务。如果方法没有关联到一个事务 ,容器会为它开启一个事务 ,如果方法在一个事务中被调用 ,该事务将会被挂起 ,在方法调用结束后 ,原先的事务会恢复执行。

    •  REQUIREDNEW 业务方法必须在自己的事务中运行。一个新的事务将被启动 ,而且如果有一个事务正在运行 ,则将这个事务挂起 ,方法运行结束后 ,新事务执行结束 ,原来的事务恢复运行。

    •  MANDATORY 该方法必须运行在一个现有的事务中 ,自身不能创建事务 ,如果方法在没有事务的环境下被调用 ,则会抛出异常。

    •  SUPPORTS 如果该方法在一个事务环境中运行 ,那么就在这个事务中运行 ,如果在事务范围外调用 ,那么就在一个没有事务的环境下运行。

    •  NEVER 表示该方法不能在有事务的环境下运行 ,如果在有事务运行的环境下调用 ,则会抛出异常

    •  NESTED 如果一个活动的事务存在, 则运行在一个嵌套的事 务中, 如果没 有活动事务, 则按照REQUIRED事务方式执行。该事务可以独立的进行提交或回滚 ,如果回滚不会对外围事务造成影响

    Spring事务隔离级别

    •  DEFAULT 使用数据库默认隔离级别

    •  READ_UNCOMMITTED 允许读取尚未提交的数据。可能导致脏读、幻读或不可重复读。

    •  READ_COMMITTED 允许从已经提交的并发事务读取。可以防止脏读 ,但依然会出现幻读和不可重复读。

    •  REPEATABLE_READ 对相同字段的多次读取结果是相同的 ,除非数据被当前事务改变。可以防止脏读和不可重复读 ,但幻读依然出现。

    •  SERIALIZABLE 完全符合ACID的隔离级别 ,确保不会发生脏读 ,幻读和不可重复读。

     脏读 :一个事务读取到另一个事务没有提交到的数据。

    不可重复读 :在同一事务中 ,多次读取同一数据返回的结果不同。

     幻读 :一个事务读取到另一个事务已经提交的事务。

    <!-- Jdbc事务管理器   -->
    <bean id="transactionManager"   class="org.springframework.jdbc.datasource.DataSourceTransactionManager">     
            <property name="dataSource" ref="dataSource"/>     
    </bean>
    <!--   基于XML配置的事务   -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">     
                <tx:attributes>     
                            <!-- propagation事物传播,isolation隔离级别 -->
                            <tx:method name="save*" propagation="REQUIRED" isolation="READ_COMMITTED"/>     
                            <tx:method name="del*"/>     
                            <tx:method name="edit*"/>     
                            <tx:method name="find*" read-only="true"/>     
                </tx:attributes>     
    </tx:advice>     
    <aop:config>     
                <aop:pointcut expression="execution(* service..*.*(..))" id="myPointcut"/>     
                <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut"/>     
    </aop:config> 
    基于Annotation的事务 
    xml
    <tx:annotation-driven transaction-manager="transactionManager"/>     
    
         
    java
    @Named     
    @Transactional     
    public class UserSerivce {     
         
    @Transactional(readOnly=true)     
    
    public List<User> findAll() {     
                 return null;     
                 }
    }  
  • 相关阅读:
    JavaBean 与 EJB 的区别
    MFC选项卡的实现
    MFC的图片按钮
    windows 下使用 MinGW + msys 编译 ffmpeg
    在windows使用vs2008编译live555
    C89 和 C99 标准比较
    11.求二元查找树的镜像[MirrorOfBST]
    10.排序数组中和为给定值的两个数字[Find2NumbersWithGivenSum]
    9.链表中倒数第k个结点[FindReverseKthLinkedListNode]
    8.另类方法求1+2+...+n[AnotherMethodOfCalculateSumN]
  • 原文地址:https://www.cnblogs.com/fudapeng/p/3873644.html
Copyright © 2011-2022 走看看