ファイルからアイテムをバッチ挿入するためのSpring jdbcプログラムトランザクション

java jdbc spring transactions
ファイルからアイテムをバッチ挿入するためのSpring jdbcプログラムトランザクション

500ファイルごとにjdbctemplateを使用して、フラットファイルとバッチ挿入から読み取るデータローダーを改良しています。 タスクを送信するJava executor固定スレッドプールを使用しています。これは各ファイルの読み取りとバッチ更新を行います。 たとえば、最初のファイルの読み取り時に、3回目のバッチ挿入中に失敗した場合、このファイルの以前のバッチ挿入はすべてロールバックする必要があります。 タスクは次のファイルで続行し、挿入用の新しいトランザクションを作成する必要があります。 これを行うことができるコードが必要でした。 現在、私はtransactiontemplateを使用して、バッチ挿入コードを `doInTransactionwithoutcallback`内にラップし、例外中にcatchブロックでトランザクションstatus.setrollbackonlyを呼び出しています。 しかし、最後のファイルが失敗したか成功したかに関係なく、次のファイルの新しいトランザクションを作成できるコードが必要です。

  0  2


ベストアンサー

Seanがコメントしたように、全体を再発明するのではなく、代わりにhttp://static.springsource.org/spring-batch/reference/html/index.html[Spring Batch]を使用する必要があります。

Spring Batchでは次のことができます:

  • partition
    実行(例: スレッドプールエグゼキューターを使用)

  • map
    ファイル内のオブジェクトへのレコード

  • 権利を設定する
    commit interval(処理済みレコードの「チャンク」をコミットする場所)およびhttp://static.springsource。 org / spring-batch / reference / html / configureStep.html#controllingRollback [rollback]いずれかが「間違っている」場合

  • エラーとは何かを指定する
    skippable、http://static.springsource.org/spring-batch/reference/html/configureStep.html#retryLogic [再試行可能]

  • その他_その他

そして、それはすでにそこにあります⇒コード化され、テストされ、素晴らしいです。

3


タイトルとURLをコピーしました