休止状態のバッチ挿入を使用して、ファイルから 100 レコードごとに挿入しようとしています。ロジックをトランザクション内にラップすると、期待どおりに動作しますか。たとえば、300 レコードから 3 つのバッチを作成し、ロジックを内部にラップするとします。トランザクションの場合、3 番目のバッチで問題が発生した場合、トランザクションは 1 番目と 2 番目のバッチをロールバックします。
質問する
1223 次
2 に答える
2
バッチは常にトランザクションでラップしてください。トランザクションごとに 100 個の挿入をバッチ処理している場合、すべてが正常であれば 100 個すべてがコミットされます。また、ステートレス セッションを使用してバッチ挿入を高速化することをお勧めします。Hibernate ドキュメントのバッチ処理チュートリアルを読むことを強くお勧めします。
于 2013-06-18T02:05:44.430 に答える
0
要するに、期待どおりに動作します。
Hibernate には、各バッチ挿入を個別のトランザクションにする必要があるという制限はありません。1 つのトランザクションで複数のバッチ挿入を実行すると、それらは全体としてコミット/ロールバックされます。
(もちろん、トランザクションをネストしたり、トランザクションでマイルストーンを使用している場合は別の話です。)
于 2013-06-18T08:05:22.303 に答える