私は春のバッチアプリケーションが動作しています。テキストファイルから読み込み、oracleテーブルに書き込むだけです。チャックのロードを実行します。現在、私は2000のチャックサイズを設定しています。問題は、このジョブのスキップリスナーを実装すると、与えられたチャンクサイズを無視して、一度に1つのレコードだけをデータベースに挿入していることです。 listernerをスキップするのは、無効なレコードをテキストファイルに書き込むことです。これは春のバッチがどのように機能するのですかスプリングバッチ、チャンクサイズ、およびスキップリスナーを一緒に
答えて
チャンクでは、ItemWriter
は常に最初にチャンク内のアイテムのリスト全体を書き込もうとします。ただし、スキップ可能な例外がスローされた場合、フレームワークはエラーの原因となったアイテムを特定する必要があります。
これを行うには、トランザクションがロールバックされ、項目が1つずつリトライされます。これにより、問題の原因となった可能性のあるアイテムがスキップリスナーに渡されます。残念ながら、チャンクのバッチ不能も取り除きます。
一般に、プロセッサで事前検証を実行することが推奨されているため、例外をスローしてアイテムを個別に再試行するのではなく、アイテムを「フィルタ処理」することができます。
実際、スキップ可能な例外はSQLExceptionsです。たとえば、特定の列に挿入する値が最大長を超えている場合などです。 SQLExceptionを取得します。私はこの例外をスキップ可能にしています。このような種類の検証では、プロセッサではできません。 Writerクラスでのみ実行できます。私たちはバッチ不能を達成し、春に機能をスキップできますか? – Vasanthakumar86
プロセッサ内のフィールド長は絶対に*確認できます。 1つのオプションは、各フィールドをチェックし、必要に応じて切り捨てます。また、注釈ベースの検証(たとえば、@Column(nullable = false、length = 12))を使用して、挿入できないことがわかっている項目を破棄(フィルタリング)することができます。 –
- 1. PHPおよびSMTPが一緒に
- 2. RおよびSQLクエリ一緒フォーマット
- 3. Gulp:Browsersync、Sourcemaps、Autoprefixer、およびCSS Cleanerを一緒に使うには?
- 4. ガルプ、Reactify、およびBabelifyが一緒に変換しない
- 5. ストライプ、角度、およびタイプスクリプトが一緒に動作しない
- 6. dgrid ColumnHider、CompundColumns、およびColumnReorderが一緒に機能しない
- 7. Ajax、perl、およびJSONを簡単に一緒に使用できますか?
- 8. GoogleシートでIMPORTRANGE、間接、および連携を一緒に使用する
- 9. NestedScrollView、SwipeRefreshLayout、およびWebViewを一緒に使用する方法は?
- 10. 2つのテーブルを一緒に更新および削除する方法
- 11. android.support.v4のViewPager、TabHost、およびFragments。すべて一緒に動作しません
- 12. 一緒に遊びとリセットを使う
- 13. チャンクサイズのチャンクサイズのデータフレームをカラム変数
- 14. react、reactdom、およびreact-reduxタイプを一緒に使用すると重複タイプのエラーが発生する
- 15. StreamReader、ArrayList、およびDataGridが一緒に働くのに助けが必要です
- 16. java.io.IOException:Bogusチャンクサイズ
- 17. routes.rbの取得、一致、およびリソース
- 18. XML一意性およびリファレンス
- 19. pbs_server、E5-2620v4および一般保護
- 20. AWS単一のパブリックIPおよびウェブソケット
- 21. 複数のXSDおよび単一XJB
- 22. のNeo4jの一括インポートおよびインデックス
- 23. Windowsキット8.0およびVisual Studio 2012 - 一緒に出荷されていますか?
- 24. httpと一緒に働くC++ライブラリをお勧めします
- 25. は一緒に
- 26. は一緒に
- 27. は一緒に
- 28. 一緒に
- 29. ユニティステッチメッシュ一緒に
- 30. は一緒に
"一度に1レコードだけをデータベースに挿入しています。"あなたはそれが毎回別々の取引で行われていると確信していますか?トランザクションの境界に必要なチャンク。 –
私は春に提供されたJdbcBatchItemWriterを使用しています。私はトランザクション関連のコードを書いていません。 JPATransactionManagerをSpring Beanとして設定しました。 – Vasanthakumar86