Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring jdbc编程事务,用于批量插入文件中的项_Java_Spring_Jdbc_Transactions - Fatal编程技术网

Java Spring jdbc编程事务,用于批量插入文件中的项

Java Spring jdbc编程事务,用于批量插入文件中的项,java,spring,jdbc,transactions,Java,Spring,Jdbc,Transactions,我正在改造一个数据加载器,它使用jdbctemplate从平面文件和batchinsert中读取每500个条目。我使用java executor固定线程池提交任务,它读取每个文件并进行批更新。例如,在读取第一个文件时,如果在第三次batchinsert期间失败,则需要回滚此文件的所有以前的batchinsert。任务应继续执行下一个文件,并为insert创建新事务。我需要一个能做到这一点的代码。目前,我正在使用transactiontemplate并将batchinsert代码包装在doInTr

我正在改造一个数据加载器,它使用jdbctemplate从平面文件和batchinsert中读取每500个条目。我使用java executor固定线程池提交任务,它读取每个文件并进行批更新。例如,在读取第一个文件时,如果在第三次batchinsert期间失败,则需要回滚此文件的所有以前的batchinsert。任务应继续执行下一个文件,并为insert创建新事务。我需要一个能做到这一点的代码。目前,我正在使用transactiontemplate并将batchinsert代码包装在
doInTransactionwithoutcallback
中,并在catch block中的异常期间调用transaction status.setrollbackonly。但我需要一个代码,它可以为下一个文件创建新事务,而不管最后一个文件是失败的还是成功的。将传播设置为需要新的解决方案?

正如肖恩所评论的,您不应该重新创建整个事务,而应该使用

Spring Batch将允许您:

  • 执行(例如,使用线程池执行器)
  • 在文件中添加到对象
  • 设置正确的值,它将提交一个已处理记录的“块”,以防其中任何一个记录“错误”
  • 指定错误是什么
  • 还有更多

而且它已经在那里=>经过编码、测试并且非常棒。

正如肖恩评论的那样,你不应该重新发明整个东西,而应该使用它

Spring Batch将允许您:

  • 执行(例如,使用线程池执行器)
  • 在文件中添加到对象
  • 设置正确的值,它将提交一个已处理记录的“块”,以防其中任何一个记录“错误”
  • 指定错误是什么
  • 还有更多

而且它已经存在=>经过编码、测试并且非常棒。

您应该试试Spring Batch。它是为了支持像这样的高级场景而构建的。你应该试试SpringBatch。它是为了支持像这样的高级场景而构建的。