Программная транзакция Spring jdbc для пакетной вставки элементов из файла

#java #spring #jdbc #transactions

#java #spring #jdbc #транзакции

Вопрос:

Я обновляю загрузчик данных, который считывает данные из плоского файла и пакетной установки с использованием jdbctemplate для каждых 500 элементов. Я использую пул фиксированных потоков java executor, который отправляет задачи, которые выполняют чтение каждого файла и пакетное обновление. Например, при чтении первого файла, если он завершается неудачно во время 3-й пакетной операции, все предыдущие пакетные операции для этого файла должны быть откатаны. Задача должна быть продолжена со следующим файлом и создать новую транзакцию для вставки. Мне нужен был код, который может это сделать. В настоящее время я использую transactiontemplate и оборачиваю код batchinsert внутри doInTransactionwithoutcallback и во время исключения в catch-блоке, вызывающем статус транзакции.setrollbackonly . Но мне нужен код, который может создать новую транзакцию для следующего файла независимо от того, произошел сбой или удался последний файл. установка значения распространения требует нового решает это?

Комментарии:

1. Вы должны попробовать Spring Batch. Он был создан для поддержки продвинутых сценариев, подобных этому.

Ответ №1:

Как прокомментировал Шон, вам не следует изобретать все заново и вместо этого использовать Spring Batch.

Пакет Spring Batch позволит вам:

И это уже есть => закодировано, протестировано и потрясающе.