2 malie1981 malie1981 于 2017.01.06 09:34 提问

java的for循环中的事务问题

在service层做for循环,现在的需求是每一次循环后的数据库操作能生效,如果某一次循环出错只会回滚当前这次的数据库操作,之前循环的操作不回滚,不知道有没有办法做到这种事务控制?在action做循环调用service是可以实现这种要求,但是这样的话就会业务代码写到action上了,不是很合理

3个回答

zhao_my_love
zhao_my_love   2017.01.06 10:09

在service层写一个不加事务的方法,去循环执行加了事务的方法。不知道你听明白没有

xionglangs
xionglangs   Rxr 2017.01.06 10:35

1、这里设置手动提交事务,并把事物的开启和提交放入for循环里面。
2、一个普通的不加事物的service方法,循环调用一个添加了事物的service方法。

liuchao901010a
liuchao901010a   2017.01.06 16:45

最简单的方法就是把service里的循环加上try catch

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
手动提交事务和在for循环里进行事务控制及声明式事务的使用实例!
事务场景:需要做一个跑批进行一个流程的实现,0.获取异常数据(多条),for循环对单条数据进行下面三个操作:1).调用别的系统进行查询,2).查询自己的库中数据,3)更改自己数据库中的数据状态。此时就需要对单条数据操作的3步骤进行事务控制,使用的过程中发现两个解决办法:第一:在controller层进数据的获取,for循环处理单条数据时调用service层进行事务的控制.第二:在service层进...
在ssh2整合中,for循环如何控制事务?在线,急
在ssh2整合中,for循环如何控制事务?在线,急 10 for(int i=0;i { 循环写入数据库 } 如何只要一条记录插入不成功,则全部不成功??? 遇见是一场 | 浏览 462 次 我有更好的答案 邀请更新 发布于2013-12-01 13:28 最佳答案 你用spring控制事物,在方法的头部加上一个注解就行了。
Spring循环体内的事务控制
Spring循环体内事务控制
java中关于事务的面试要点
一:事务引发的问题: 1.dirty reads 脏读 一个事务正在对数据进行更新操作,但是更新还未提交,另一个事务这时也来操作这组数据,并且读取了前一个事务还未提交的数据,而前一个事务如果操作失败进行了回滚,后一个事务读取的就是错误的数据,这样就造成了脏读 2.不可重复读    一个事务多次读取同一个数据,在该事务还未结束时,另一个事务也对该数据进行了操作,而且在第一个事务两次读取之间,第...
事务并发的问题
转自:http://my.oschina.net/mushui/blog/161452 一个数据库可能拥有多个访问客户端,这些客户端都可以并发方式访问数据库。数据库中的相同数据可能同时被多个事务访问,如果没有采取必要的隔离措施,就会导致各种并发问题,破坏数据的完整性。这些问题可以归结为5类,包括3类数据读问题( 脏读、 不可重复读和 幻象读)以及2类数据更新问题( 第一类丢失更新和
你真的了解For循环吗?一道For循环Java面试题引发的思考
疑问 最近群友抛出了一个面试题,就是下图中的第二题,是关于一个for循环的执行结果的问题,他的代码的执行结果是什么呢?  代码复现 下面的例子和面试题上面的大同小异,是个非常简单的例子。首先这个代码是可以编译通过的,也可以正常执行的。那么执行结果是什么呢?会跟我们猜想的一样吗? /** * Created by baiguantao on 2017/10/
Java中JDBC的事务问题
事务 l  事务的四大特性:ACID; l  mysql中操作事务 l  jdbc中操作事务 事务概述 为了方便演示事务,我们需要创建一个account表: CREATE TABLE account(          id INT PRIMARY KEY AUTO_INCREMENT,          NAME VARCHAR(30),          ba
for循环作用域问题
<br />以下程序会alert什么? <br /> var arr = []; for(var i=0; i< 2;i++){ var fn = function(){ alert(i) } arr.push(fn); } for(var j in arr){ var fn = arr[j]; fn(); }<br />答案是 2 , 2<br />其实理应让其alert 0,1才对<br />这是因为第一个for循环里面创建函数fn的时候里面的i
for循环内使用闭包,变量的作用域详解
循环内使用闭包的其实要根据作用域来解释 首先js中是没有“块状作用域”的,请看下面java例子 Java code ? 1 2 3 4 5 6 7 8      //scope1 作用域1      for (int i = 0; i 10; i++){         //
java中for循环删除元素的问题
原来一直没仔细想过java中for循环的删除问题,昨天写一道题时候发现输出结果跟想象不一样,debug时候发现了这个问题,写出来分享一下。