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

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

原文地址:https://www.cnblogs.com/xwgcxk/p/9218110.html

时间: 2024-11-04 04:13:18

Java开发中使用事务的相关文章

java开发中的那些事(5)--------一点经历,败给2分钟的2个小时

特意记下这个经历,这个让我感慨万千又斗志昂扬的一次经历,这是经验,也是生活. 故事的始末是这样的,先给大家上几句代码,现在身在家中,只能凭记忆敲打几行,大致意思倒不会错: {field:'code',align:'center'} {field:'btfid',align:'center',hidden:'true', formatter:function(value,row,rowIndex){ return "<a href="javascript:void(0)"

java开发中使用的工厂设计模式

package gongchangdemo; /* * 在java开发中使用较多的一种设计模式:工厂模式:就是一个过渡端 * 通过过度端来取得接口的实例化对象,这个过渡端就称为工厂factory * 这个模式主要是为了解决修改子类,必须要修改main方法,而main方法主要是客户端,客户端 * 经常变来变去不太好,就引进:工厂模式 */ public class gongchangdemo { public static void main(String args[]) { //getinsta

完整java开发中JDBC连接数据库代码和步骤

完整java开发中JDBC连接数据库代码和步骤 JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String  className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(Class

java开发中截取上传文件的文件名和后缀名

java开发中截取上传文件的文件名和后缀名 /** * Return the extension portion of the file's name . * * @see #getExtension */ public static String getExtension(File f) { return (f != null) ? getExtension(f.getName()) : ""; } public static String getExtension(String f

java开发中的那些事(3)-------最常用到的几个快捷键

今天去看了韩寒的<后会无期>,感慨颇多. 这里记录下现在常会用到的几个快捷键,不多,却是当前最常用到: 1.ctrl+f  ----------------"搜索", 这个应该在大多数人来说都太简单了,可惜我也是知道不长时间: 2.ctrl+shift+r  --------"工程内搜索",这个也是搜索,不过是搜索整个工程的,这个知道后美滋滋了好久: 3.ctrl+/  ----------------"简单注释","//&

Java 开发中的对象拷贝

前言 在 Java 开发中,很多时候需要将两个属性基本相同的对象进行属性复制,比如 DO 转 VO等等. 本文主要介绍自己实现的简易拷贝工具类与 Spring 提供的属性拷贝的对比. Spring 提供的属性拷贝 在 Spring 中直接调用 BeanUtils.copyProperties();即可. 它的核心通过循环 target 的所有方法名,然后在 source 中找到对应的方法名,最后通过反射从 source 中获取并写入 target 中. Spring 没有通过 java.lang

JAVA开发中相对路径,绝对路径全面总结

JAVA开发中相对路径,绝对路径全面总结 博客分类: Java综合 JavaJSP应用服务器Servlet网络应用 1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://www.sun.com/index.htm也代表了一个 URL绝对路径. 相对路径:相对与某个基准目录的路径.包含Web的相对路径(HTML中的相对目录),例如:在 Servlet中,"/

记录:Protocol&#160;Buffers(protobuf)在Java开发中使用

数据交换的方式很多比如:XML,JSON,Protobuf.虽然protobuf很流行,并且系出名门,可是没怎么用过.通过阅读google developers里关于protocal-buffers的内容基本可以使用它了.如果你访问该链接https://developers.google.com/protocol-buffers/ 失败的话,肯能需要VPN服务. 语言手册:https://developers.google.com/protocol-buffers/docs/proto Prot

java开发中的那些事(6)------一次ajax调用中的问题

这个周末就要到这次开发任务的结尾了,不过也到这时候了,才发现用起来比较顺手了,前几次项目中也有过啊,说起来实实在在用过的才3个项目,就分别用了不同的,着实有些痛苦啊,初学阶段的jsp+servlet还算是初学,可这后面的loushang和ssh2是让我欢喜让我忧啊,高兴的是框架的魅力让我情不自禁,可这样的框架我啥时候才能自己组的那么完善,甚至现在用起来还磕磕绊绊的.总结下这次的大收获的话,一方面是这个框架,另一方面的话就是ajax和json了,这个在我来说是比较陌生的地方,虽然现在我可以用,但原