2

古典的なシナリオがあります: このレコードからの以前に準備された値に基づく同じレコードへの 2 つの更新。私は楽観的並行性を前提として作業しています。条件付き更新を自分で実装するのは難しくありません。問題は、それを処理するドライバーまたは DB の特定の API に依存できるかどうかです。

当然、私はそれをグーグルで検索しましたが、コードサンプルについて言及せずに、楽観的同時実行とは何かの説明しか思い浮かばないようです...

JDBC データダイレクトドライバーを使用しています。

ありがとう!

4

1 に答える 1

3

いいえ、JDBC はオプティミスティック コンカレンシーをサポートしていません。versionオプティミスティック コンカレンシーは、テーブルに専用の列を使用し、更新が行われるたびにバージョン値をインクリメントすることにより、JPA によって処理されます。更新クエリは次のようになります。

update foo set ..., version = version + 1 
where id = :theId and version = :theVersionLoadedInMemory

1 ではなく 0 が返された場合executeUpdate()は、他の誰かがレコードを削除したか、更新してバージョンを増やしたことを意味します。

于 2012-07-19T08:40:39.857 に答える