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注解就可以了,

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

  • 相关阅读:
    php 获取文件的md5
    php 获取远程文件大小
    chrome 浏览器,大屏显示
    Mac 中Java项目打包上线
    如何在苹果M1芯片 (Apple Silicon) 上安装 JDK 环境
    Mysql 替换数据中的部分内容,比如迁移服务器,需要修改图片地址
    docker安装指定版本minio
    docker 查询镜像并删除
    docker 容器名称已存在
    docker 安装minio
  • 原文地址:https://www.cnblogs.com/xwgcxk/p/9218110.html
Copyright © 2011-2022 走看看