Java Spring jdbc编程事务,用于批量插入文件中的项
我正在改造一个数据加载器,它使用jdbctemplate从平面文件和batchinsert中读取每500个条目。我使用java executor固定线程池提交任务,它读取每个文件并进行批更新。例如,在读取第一个文件时,如果在第三次batchinsert期间失败,则需要回滚此文件的所有以前的batchinsert。任务应继续执行下一个文件,并为insert创建新事务。我需要一个能做到这一点的代码。目前,我正在使用transactiontemplate并将batchinsert代码包装在Java Spring jdbc编程事务,用于批量插入文件中的项,java,spring,jdbc,transactions,Java,Spring,Jdbc,Transactions,我正在改造一个数据加载器,它使用jdbctemplate从平面文件和batchinsert中读取每500个条目。我使用java executor固定线程池提交任务,它读取每个文件并进行批更新。例如,在读取第一个文件时,如果在第三次batchinsert期间失败,则需要回滚此文件的所有以前的batchinsert。任务应继续执行下一个文件,并为insert创建新事务。我需要一个能做到这一点的代码。目前,我正在使用transactiontemplate并将batchinsert代码包装在doInTr
doInTransactionwithoutcallback
中,并在catch block中的异常期间调用transaction status.setrollbackonly。但我需要一个代码,它可以为下一个文件创建新事务,而不管最后一个文件是失败的还是成功的。将传播设置为需要新的解决方案?正如肖恩所评论的,您不应该重新创建整个事务,而应该使用
Spring Batch将允许您:
- 执行(例如,使用线程池执行器)
- 在文件中添加到对象
- 设置正确的值,它将提交一个已处理记录的“块”,以防其中任何一个记录“错误”
- 指定错误是什么
- 还有更多
而且它已经在那里=>经过编码、测试并且非常棒。正如肖恩评论的那样,你不应该重新发明整个东西,而应该使用它 Spring Batch将允许您:
- 执行(例如,使用线程池执行器)
- 在文件中添加到对象
- 设置正确的值,它将提交一个已处理记录的“块”,以防其中任何一个记录“错误”
- 指定错误是什么
- 还有更多
而且它已经存在=>经过编码、测试并且非常棒。您应该试试Spring Batch。它是为了支持像这样的高级场景而构建的。你应该试试SpringBatch。它是为了支持像这样的高级场景而构建的。