バックグラウンド
実装する必要のあるJPAカスケードバッチ更新に問題があります。更新では、約10000個のオブジェクトが取得され、それらが一度にデータベースにマージされます。オブジェクトの平均深度は5オブジェクト、平均サイズは約3kbです。永続性プロバイダーはOracleToplinkです。
これは大量のメモリを消費し、完了するまでに数分かかります。
私は周りを見回しました、そして私は3つの可能性を見ます:
標準のJPAマージステートメントをループし、特定の間隔でフラッシュする
JPQLの使用
Toplink独自のAPIを使用する(私はまったく経験がありません)
だから私はいくつか質問があります
代わりにJPQLを使用して、標準のマージからのオーバーヘッドを削減しますか?私が正しく理解していれば、マージによってオブジェクトツリー全体が呼び出される前に複製されます。実際に速いですか?プロセスをスピードアップするためのトリックはありますか?
Toplink APIを使用してバッチマージを行うにはどうすればよいですか?
そして、これは主観的なものであることを私は知っていますが、JPA / Toplinkで大規模なカスケードバッチ更新を行うためのベストプラクティスはありますか?多分私が考慮しなかった何か?
関連する質問