6

私は楽観的で悲観的なロックが何であるかを知っていますが、Javaコードを書くときはどうやってそれをしますか? OracleとJavaを使用しているとします.JDBCでJDBCを使用する方法はありますか?どうすればこのことを設定できますか?すべてのポインタが評価されます。Javaコードから楽観的および悲観的なロックをコード化する方法

+0

JavaロックとJDBCは、あなたが探している方法では関係ありません。あなたが解決しようとしている問題は何ですか? Javaロックは、「同期」キーワードを使用して取得できる再入可能ロックです。 これで、正確に何を探していますか? – Pavan

+0

データベースのロックを探しています – user2434

答えて

3

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

This Oracle paperには、これを行う方法に関するヒントがあります。

特定のJDBCメソッドはありません。むしろ、SQL問合せ/更新を設計する方法とトランザクション境界を置く場所によって、オプティミスティック・ロックを実現します。

11

あなたはこの方法であなたのDBテーブルに楽観的ロックを実装することができます(これは休止状態にどのように行われるか楽観的ロックである):

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

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

    のようになります

、このメカニズムは、すべての当事者が特別な処理を必要としないDBMSが提供するロックに反して、それに従っている場合にのみ機能します。

これが役に立ちます。

関連する問題