問題タブ [itemwriter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spring Batch : カスタム バッチ サイズを使用してデータベース テーブルにリストを書き込む
バックグラウンド
私は Spring Batchジョブを持っています:
FlatFileItemReader
- ファイルから一度に 1 行ずつ読み取りますItemProcesor
- 行をファイルから に変換しList<MyObject>
、List
. つまり、ファイル内の各行はList<MyObject>
(ファイル内の 1 行が多数の出力行に変換される) に分割されます。ItemWriter
List<MyObject>
-をデータベース テーブルに書き込みます。(この 実装を使用して、プロセッサとデリゲートから受け取ったリストを にアンパックしましたJdbcBatchItemWriter
)
質問
List
ポイント 2) で、プロセッサは 100000 個のMyObject
インスタンスを返すことができます。- ポイント 3) で、デリゲートは100000 個のオブジェクト
JdbcBatchItemWriter
全体をデータベースに書き込むことになります。List
私の質問は次のとおりJdbcBatchItemWriter
です。カスタムバッチサイズは許可されていません。すべての実際的な目的のために、ステップのバッチサイズ = コミット間隔。これを念頭に置いて、データベースへの書き込みを許可し、構成可能なバッチサイズを許可するSpring Batchで利用可能な別の実装はありますか? そうでない場合、これを達成するために自分でカスタムライターを作成するにはどうすればよいですか?ItemWriter
java - FlatFileItemWriter は JobExecution ごとに新しい (存在しない) ファイルに書き込みます
現在、Spring Batch CSV Export に取り組んでいます。Chunk ベースのリーダ、ライタ、プロセッサが使用されます。読み取りと処理は問題なく動作しますが、FlatFileItemWriter は常に出力 CSV ファイルを上書きします。ジョブがファイルが存在するかどうかを確認し、存在する場合は fileName をインクリメントして新しいファイルに書き込みます。
私の現在のコードは次のとおりです。ファイルが存在するかどうかを確認し、ライターが使用する新しい文字列を返すヘルパー クラスです。
私のアイテムライター:
ジョブが実行されるたびに、FileWriter は同じ出力ファイルに書き込みます。OrderFileManager は、ジョブで自動配線されます。そしてライターは OrderFileManager を受け取ります。パラメータとして getEmptyOrderNameString() 。