注文列で並べ替えられたエンティティの順序付きリストを含む SQL テーブルを使用する Java アプリケーションを取得しました。リストの途中にあるものを追加/削除したいと思います。さて、いくつかの永続化フレームワーク / orm / you-name-it が注文列のバッチ更新でこの種の機能を提供できるかどうか疑問に思っています。
基本的なケースでは、Hibernate (およびおそらく他のものも) がこの機能を提供します。問題は、オブジェクトが一度に 1 つずつ処理されることです。これは、リストが十分に大きい場合に問題になります。別の解決策は、たとえば次のように、バッチ SQL 更新を使用して行うことです。
UPDATE table SET order_col = order_col + 1 WHERE order_col > 47
INSERT TO table VALUES ('new_id', 'new_description, ..., 47)
これはデータベース エンジンによって非常に高速に実行されますが、サポートされていません。
さて、オブジェクトとそのバージョン管理、ダーティチェックなどを考えると、この種のバッチ更新はあまりうまくいかないことを理解しています. -それはいくつかの助けを提供します。もちろん、私はカスタム SQL/HQL/... でそれを行うことができますが、すでに何らかの解決策があるかどうか疑問に思っていました (他の誰かが以前にこのようなことを行い、それをオープンソースにすることさえできたと思います)。また、問題に関連する他の良いアイデアも大歓迎です =)