9

楽観的ロックと悲観的ロックが何であるかは知っていますが、Java コードを作成するときはどのようにしますか? Java で Oracle を使用しているとします。これを行うのに役立つ JDBC のメソッドはありますか? これをどのように構成しますか?任意のポインタをいただければ幸いです。

4

2 に答える 2

15

この方法で、DB テーブルに楽観的ロックを実装できます (これは、Hibernate で楽観的ロックが行われる方法です)。

  1. テーブルに整数の「バージョン」列を追加します。
  2. 対応する行が更新されるたびに、この列の値を増やします。
  3. ロックを取得するには、行の「バージョン」値を読み取るだけです。
  4. update ステートメントの where 句に「version = received_version」条件を追加します。更新後に影響を受ける行の数を確認します。行が影響を受けなかった場合 - 誰かがすでにエントリを変更しています。

更新は次のようになります

UPDATE mytable SET name = 'Andy', version = 3 WHERE id = 1 and version = 2

もちろん、このメカニズムは、特別な処理を必要としない DBMS 提供のロックとは対照的に、すべての関係者がそれに従っている場合にのみ機能します。

お役に立てれば。

于 2012-01-16T13:46:55.630 に答える
3

Java で Oracle を使用しているとします。これを行うのに役立つ JDBC のメソッドはありますか?

このオラクルの論文では、これを行う方法に関するいくつかのヒントを提供する必要があります。

特定の JDBC メソッドはありません。むしろ、SQL クエリ/更新を設計する方法と、トランザクション境界を置く場所によって楽観的ロックを実現します。

于 2012-01-01T06:52:21.947 に答える