您的位置:首页 > 编程语言 > Java开发

Spring嵌套事务控制

2014-07-26 00:00 197 查看
假设在我们项目中事务控制是放在service层,
一。现在项目中有一个ServiceA中有方法method1和method2,方法method2配置的事务级别为PROPAGATION_REQUIRES_NEW,方法method1不受事务控制
1。当在method1中调用method2时,method2此时也不受事务控制,如:在method2中进行数据插入操作,第一条数据插入成功,第二条数据插入发生异常,此时因为method2不受事务控制,在第一条数据插入成功后,第二条数据插入即使抛出异常,此时第一条数据也不会被回滚.
2.当在method2中调用method1时,则此时method1会受事务控制,如:在method1中进行数据插入操作,插入成功,但此时method2中抛出异常,结果method1成功插入的数据会回滚.

二。现项目中有ServiceA,ServiceB两个Service,在ServiceA中有method1方法,在SerivceB中有method2方法.其中method1不受事务控制,method2受事务控制
1.当在method1中调用ServiceB中的method2方法,在method2方法中执行往数据库中插入两次数据,第一次插入成功,第二次插入发生异常,此时第一次插入成功的数据会发生回滚,由此可见ServiceB中的method2还是受事务控制,而在method1中如果分两次往数据库中插入数据,第一次插入成功,第二次发生异常,此时第一次插入的数据不会回滚,同时也不会影响method2中的插入数据。

2。当在ServiceB中的method2中调用ServiceA中的method1时,method1中执行数据插入成功,而此时method2中操作发生异常,结果会导致method1中数据回滚,由此可知method1共用method2的事务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  嵌套事务