Spring でビジネス ニーズを実装しようとしていますが、トランザクション管理に関していくつかの問題があります。
ビジネスの必要性は、単純に、
1) いくつかの基準でデータベース (#1) を照会することです。
2) クエリの結果をフラット ファイルに書き込みます。
3) データベース (#1) 内のそれらのレコードを「処理済み」として更新します。
4) 最初の 3 つのステップの結果として、別のデータベース (#2) にレコードを挿入します。
これらの 4 つのステップは、取引を行うために必要です。たとえば、4 番目のステップが失敗した場合、2 番目のステップでフラット ファイルに書き込まれた最後のアイテムをロールバックする必要があります。ファイルのロールバック機構を実装する「Apache Commons File Resource Manager」を見つけました。
私のメンターは、これらの種類のプロジェクトには一般的に Spring Batch を使用するように勧めてくれました。ただし、Spring Batch が「チャンク指向処理」スタイルを採用していることを考えると、Spring Batch で実装するのはかなり難しそうです。私の知る限り、チャンク指向のスタイルでは、チャンク全体に対して2番目のステップを完了する必要があり、実装の3番目と4番目のステップに進むことができます。
このプロジェクトと、この目的で Spring Batch を使用するかどうかについて、一般的なアドバイスが必要だと思います。さらに、そのスタイルではロールバック メカニズムが非常に複雑になるため、これらのニーズを並行環境で実装することをお勧めします。