spring 嵌套事务问题】的更多相关文章

一.基本概念 事务的隔离级别,事务传播行为见<事务之二:spring事务(事务管理方式,事务5隔离级别,7个事务传播行为,spring事务回滚条件) > 二. 嵌套事务示例 2.1.Propagation.REQUIRED+Propagation.REQUIRES_NEW package dxz.demo1; @Service public class ServiceAImpl implements ServiceA { @Autowired private ServiceB serviceB…
A类   callBack_test() B类   testadd() C类   select(),得查询到B类testadd方法中新增的数据.以及初始化一些属性 场景:A类 嵌套 B类  B类嵌套C类:都是由spring控制事务. 要求:B类testadd方法中不受spring事务控制,单独新开个事务运行,可以使C类查询的到. 问题:A类是系统底层方法,必须受事务控制.且C类必须查询到刚刚add的数据. 分析:初步分析为:Spring事务传播性导致的,从A类开启的事务,就有完结.为了避免这样的…
Spring遇到嵌套事务时,怎么实现 实验时却遇到一个奇怪的问题: 1.当ServiceA.a()方法调用ServiceB.b()方法时,内层事务提交和回滚,都不受外层事务提交或回滚的影响. 2.当ServiceA.a()方法调用ServiceA.c()方法时,内层事务不能正确地提交或回滚. 如下: xxxServiceA类中,有如下两个方法. @Transactional method_One() { method_Two(); } @Transactional(propagation = P…
嵌套事物总结 事物成功总结 1.内外都无try Catch的时候,外部异常,全部回滚. 2.内外都无try Catch的时候,内部异常,全部回滚. 3.外部有try Catch时候,内部异常,全部回滚 4.内部有try Catch,外部异常,全部回滚 5.友情提示:外层方法中调取其他接口,或者另外开启线程的操作,一定放到最后!!!(因为调取接口不能回滚,一定要最后来处理)   总结:由于上面的异常被捕获导致,很多事务回滚失败.如果一定要将捕获,请捕获后又抛出RuntimeException(默认…
转载自:http://www.blogjava.net/freeman1984/archive/2010/04/28/319595.html7个传播行为,4个隔离级别, Spring事务的传播行为和隔离级别[transaction behavior and isolated level]2007-08-01 16:33事务的传播行为和隔离级别[transaction behavior and isolated level] Spring中事务的定义:一.Propagation : key属性确定…
最近写的一个消息推送的接口,供订单生成后调用,发现每次传过来的时候订单id是存在的,可是利用订单id去查订单信息做后续操作时发现查不到数据,最终发现是订单生成时候业务处理写在service层,加了Spring的事务处理的相关参数: @Transactional(value="txManager",isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,rollbackFor={Exception.class}) 而紧接着…
转载自:http://blog.chinaunix.net/u1/55983/showart_2091761.html 7个传播行为,4个隔离级别, Spring事务的传播行为和隔离级别[transaction behavior and isolated level]2007-08-01 16:33事务的传播行为和隔离级别[transaction behavior and isolated level] Spring中事务的定义: 一.Propagation : key属性确定代理应该给哪个方法…
<bean id="接口" parent="父id"> <property name="target"> <ref local="实现" /> </property> </bean> <bean id="实现" class="实现类的全路径"> <property name="成员变量"&g…
7个传播行为.4个隔离级别. Spring事务的传播行为和隔离级别[transaction behaviorand isolatedlevel] Spring中事务的定义: Propagation(key属性确定代理应该给哪个方法添加事务行为.这种属性最重要的部份是传播行为.)有下面选项可供使用: PROPAGATION_REQUIRED--支持当前事务,假设当前没有事务.就新建一个事务. 这是最常见的选择. PROPAGATION_SUPPORTS--支持当前事务,假设当前没有事务,就以非事务…
<aop:config proxy-target-class="false">    <aop:advisor advice-ref="txAdvice" pointcut="*" />    </aop:config>        <!-- 定义事务通知 -->    <!-- name:方法名的匹配格式 -->    <!-- propagation:指定事物的传播级别 --…
PROPAGATION_REQUIRED-- 支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择. ServiceA { void methodA() { ServiceB.methodB(); } } ServiceB { void methodB() { } } PROPAGATION_REQUIRED 假如当前正要执行的事务不在另外一个事务里,那么就起一个新的事务 比如说,ServiceB.methodB的事务级别定义为PROPAGATION_REQUIRED, 那么由于执行…
spring 的2大核心 是Ioc 和 aop  spring的依赖注入:在程序运行期间,由外部容器动态的将依赖对象注入到组件中  IOC: 实例化spring容器的二种方法 第一种:在类路径下寻找配置文件来实例化容器(实际开发中使用此方法) ApplicationContext ctx= new ClassPathXmlApplicationContext(new String [] {"beans.xml"}) spring的配置文件可以有多个,所有可以用一个string数组来接收…
7个传播行为,4个隔离级别(转自 http://www.blogjava.net/freeman1984/archive/2010/04/28/319595.html) Spring事务的传播行为和隔离级别[transaction behavior and isolated level]2007-08-01 16:33事务的传播行为和隔离级别[transaction behavior and isolated level] Spring中事务的定义:一.Propagation : key属性确定…
注解事务: 1.开启注解事务配置: <!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </be…
Spring AOP : Pointcut表达式: designators-指示器 wildcards-通配符 operators-操作符 wildcards: * -- 匹配任意数量的字符 + -- 匹配制定类及其子类 ..-- 一般用于匹配任意数的子包或参数 operator: && || ! Wildcards(通配符) * 匹配任意数量的字符 + 匹配指定类及其子类 .. 一般用于匹配任意数的子包或参数 Pointcut :切面表达式 designators:指示器,描述通过什么方…
一. 场景 有一个定时器,做数据库表数据同步. 把数据库A的表table(DB_A_TABLE)同步到数据库B的表table(DB_B_TABLE). 对于DB_A_TABLE的每行数据要做一定的逻辑处理转换到DB_B_TABLE,这转换过程中可能会出异常,所以此行记录无法同步,要记录这行数据到log文件或者保存到DB_B的某张表记录下来.但别的正确转换的数据,要正常的同步. EX: DB_A_TABLE 有8行记录[1,2,3,4,5,6,7,8],其中[3,6,7]无法被正确转换,[5]能正…
大家好,我是树哥. Spring 事务是复杂一致性业务必备的知识点,掌握好 Spring 事务可以让我们写出更好地代码.这篇文章我们将介绍 Spring 事务的诞生背景,从而让我们可以更清晰地了解 Spring 事务存在的意义. 接着,我们会介绍如何快速使用 Spring 事务.接着,我们会介绍 Spring 事务的一些特性,从而帮助我们更好地使用 Spring 事务.最后,我们会总结一些 Spring 事务常见的问题,避免大家踩坑. 诞生背景 当我们聊起事务的时候,我们需要明白「事务」这个词代…
Spring中事务的定义:一.Propagation : key属性确定代理应该给哪个方法增加事务行为.这样的属性最重要的部份是传播行为.有以下选项可供使用: PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择. PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行. PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常. PROPAGATION_REQUIRE…
Spring事务的传播机制 本文来自于博客:https://blog.csdn.net/yuanlaishini2010/article/details/45792069 一.事务的嵌套概念 事务的嵌套就是两个事务方法之间相互调用. spring事务开启 ,或者是基于接口的或者是基于类的代理被创建(注意一定要是代理,不能手动new 一个对象,并且此类(有无接口都行)一定要被代理——spring中的bean只要纳入了IOC管理都是被代理的).所以在同一个类中一个方法调用另一个方法(有事务的方法),…
事务传播行为种类 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为, 它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 表1事务传播行为类型 事务传播行为类型 说明 PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中.这是最常见的选择. PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行. PROPAGATION_MANDATORY 使…
先了解事务的7种传播属性: PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择. PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行. PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常. PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起. PROPAGATION_NOT_SUPPORTED --…
转自http://www.iteye.com/topic/35907 在所有使用 spring 的应用中, 声明式事务管理可能是使用率最高的功能了, 但是, 从我观察到的情况看, 绝大多数人并不能深刻理解事务声明中不同事务传播属性配置的的含义, 让我们来看一下 TransactionDefinition 接口中的定义: /** * Support a current transaction, create a new one if none exists. * Analogous to EJB…
/** * Support a current transaction, create a new one if none exists. * Analogous to EJB transaction attribute of the same name. * <p>This is typically the default setting of a transaction definition. */ int PROPAGATION_REQUIRED = 0; /** * Support a…
起因: 项目期间由于一次异常回滚问题,发现自己在事务知识方面知识的遗漏,趁着这次机会,做了几次rollbackFor的测试. 测试:   现在有两个事务,事务oute包含事务Inner.事务A回滚规则是当事务抛出TestException,其中TestException继承RunTimeException.事务B的回滚规则是事务抛RuntimeException.事务的传播方式都是使用的默认,即 Propagation.REQUIRED.如以下代码: @Override @Transaction…
JDBC事务保存点(setSavepoint, releaseSavepoint )实例 以下是使用事务教程中描述的setSavepoint和回滚的代码示例. 此示例代码是基于前面章节中完成的环境和数据库设置编写的. 复制并将以下示例代码保存到:JDBCSavepoint.java 中,编译并运行如下 - import java.sql.*; public class JDBCSavepoint { // JDBC driver name and database URL static fina…
事务配置 首先在/WEB-INF/applicationContext.xml添加以下内容: <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref…
1.数据并发问题 脏读 A事务读取B事务尚未提交的更新数据,并在此数据的基础上操作.如果B事务回滚,则A事务读取的数据就是错误的.即读取了脏数据或者错误数据. 不可重复组 A事务先后读取了B事务提交[更新]之前和提交更新之后的数据,两者数据不一致.A和B读取同一个数据. 幻象读 A事务先后读取B事务提交[新增]之前和提交新增之后的数据,两者数据不一致.A和B读取的数据范围不一致,A读取范围大于B的. 丢失更新 A事务提交或回滚时,将B事务的更新操作覆盖. 2.spring事务管理api Spri…
struts2 + Spring +hibernate Hibernate工作原理及为什么要用?   原理:   1.读取并解析配置文件   2.读取并解析映射信息,创建SessionFactory   3.打开Sesssion   4.创建事务Transation  5.持久化操作   6.提交事务   7.关闭Session   8.关闭SesstionFactory    为什么要用:   1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码.    2. Hib…
原文  http://blog.didispace.com/springboottransactional/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合.由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成,之前成功操作数据的并不可靠,需要在这种情况下进行回退. 事务的作用就是为了保证用户的每一个操作都是可靠的,事务中的每一步操作都必须成功执行,只要有发生异常就回退到事务开始未进行…
此处主要讲讲事物的属性. 事物属性包含了五个方面: 1.传播行为 2.隔离规则 3.回滚规则 4.事物超时 5.是否只读 一.传播行为 事务的第一个方面是传播行为(propagation behavior).当事务方法被另一个事务方法调用时,必须指定事务应该如何传播.spring定义了七种传播行为. 1.1  PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择. 1.2 PROPAGATION_SUPPORTS--支持当前事务,如果当前没…