zoukankan      html  css  js  c++  java
  • Java开发中使用事务

    一、      XML,使用tx标签配置拦截器实现事务

    二、      Annotation方式

    一、XML,使用tx标签配置拦截器实现事务

    中主要配置中是tx:advice和aop:config两个配置节,以Spring AOP的方式实现事务管理。

    tx:advice配置了事务的管理者是transactionManager,同时tx:method也规定了如果方法名匹配“add*”和“get*”方法时使用事务,propagation是设定事务的传播级别。除了“add*”和“get*”方法,其他的方法的事务是只读的(典型地,对于只执行查询的事务你会将该属性设为true,如果出现了更新、插入或是删除语句时只读事务就会失败)

    aop:config指定了一个aop:pointcut去引用上边的advice。

    这样就通过AOP的拦截机制实现了事务,方法上面就不用@Transactional了

    二、Annotation方式

    将配置文件中

    <!-- 通知 -->
    <!-- <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
    &lt;!&ndash; 传播行为 &ndash;&gt;
    <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" no-rollback-for="java.lang.RuntimeException"/>
    <tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.RuntimeException" />
    <tx:method name="add*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.RuntimeException" />
    <tx:method name="create*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.RuntimeException" />
    <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
    <tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
    <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
    <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
    <tx:method name="select*" propagation="SUPPORTS" read-only="true" />
    <tx:method name="query*" propagation="SUPPORTS" read-only="true" />
    </tx:attributes>
    </tx:advice>
    &lt;!&ndash; 切面 &ndash;&gt;
    <aop:config>
    <aop:pointcut id="transactionPointcut" expression="execution(* com.xwg.service.*.*(..))" />
    <aop:advisor pointcut-ref="transactionPointcut" advice-ref="txAdvice" />
    </aop:config> -->

    这部分注释掉,然后方法上面加@Transactional注解就可以了,

    如果在类上面加这个注解,说明这个类下面所有的方法都启用事务

  • 相关阅读:
    【vue开发问题-解决方法】(十一)数据双向绑定导致修改数据格式原数据绑定出错
    【JavaScript】使用url下载文件,解决chrome浏览器自动识别图片打开问题。
    我的转行之路(电气转IT)------2018阿里校招面经
    关于Class.getResource和ClassLoader.getResource的路径问题
    protected修饰符详解
    为什么i=i++后,i的值不变(深入解析)
    Java中的初始化详细解析
    再谈抽象类(感觉理解的更深了)
    数据类型总结(干货)
    Java的接口和抽象类深入理解
  • 原文地址:https://www.cnblogs.com/xwgcxk/p/9218110.html
Copyright © 2011-2022 走看看