日期:2014-05-17  浏览次数:20825 次

关于SSH框架插入N条数据
有一个Excel文件,要读取里面的每一条记录,有很多条,并把记录保存到数据库中。
应该在Action中直接调用service保存还是在service中保存。
事务边界在service

如果在Action中保存,每次都要开启一个事务,是不是会影响效率?但是在service中的话要是有一条出现问题就全部回滚了,不知该如何处理,有什么好的解决方案吗
数据库 事务 数据

------解决方案--------------------
楼主是不是没搞明白事物呀。
直接在action中就可以了,每次开启一个事物不会太影响效率。
------解决方案--------------------
不是应该一起commit 吗,如果出现错误就rollback
------解决方案--------------------
引用:
Quote: 引用:

不是应该一起commit 吗,如果出现错误就rollback


因为我的数据全部都是互不影响的、所以要是出现错误不需要回滚,但是要是每条插入都放在一个事务里效率会不会很低

你的数据都是互不影响的当然是调用service进行保存,service作为事务管理的边界里面的同一个service同一个方法内的事务是相同的,不同的service或不同的方法事务是互不影响的。楼主的要求肯定是要调用service进行保存,你在同一个service的同一个方法内进行保存,一个错误肯定是要回滚的
------解决方案--------------------
更新当然在services中更新了. 如果数据量太大的话,你可以批量向services中传递参数, 而不是一次全部把数据都放入services中,如果更新失败的话,要把这个失败记录写到日志了,更新完成后把错误日志结果显示出来,再把错误的根据错误提示修改后重新导入一遍就可以了.