私たちのアプリは主に、Hibernate のバージョン管理サポートを使用した楽観的ロックを使用しています。特定のシナリオで悲観的ロックを実装する予定です。私は悲観的ロックの経験があまりないので、この質問がナイーブに聞こえる場合はご容赦ください。
ユーザーがエントリを更新する意図を示した場合、「select for update」を使用して対応する DB 行をロックします。さて、このユーザーが変更をコミットするのに長い時間がかかり、ロック後にそれを忘れてしまった場合、タイムアウト/ロールバック メカニズムを使用してこのロックを解除するにはどうすればよいでしょうか? 行が非常に長い間ロックされたままになり、他のすべてのユーザーがその行を編集できなくなることがないようにします。
これが、私たちが使用している Weblogic-JTA-Spring トランザクション メカニズムで処理されるかどうかは疑問です。ここでは、既に 30 分のトランザクション タイムアウトがあります。(??)
したがって、このロールバックは Oracle レベルで直接処理する必要があります。はいの場合、どのように?このようなロックが長く残りすぎないように、これを処理する最善の方法についてアドバイスしてください。