私は、GETにあったバージョン番号をPUT呼び出しに戻してデータベーステーブルに1対1のマッピングを持つRESTリソースに対してオプティミスティックロックを実装しました。 GETとPUTの間にバージョン番号がデータベースで変更された場合、楽観的なロック例外が発生しました。かなりシンプルなデザイン。RESTで粗いオプティミスティック・ロックをどのように実装しますか?
ここで、複数のデータベーステーブルにマップされる複合RESTリソースの場合、同じことをどうやって行うのですか?複数のバージョンフィールド(複合リソースに関連する各データテーブルの1つ)を返す必要はありません。複合リソースの単純な例は/ FooBarです。ここで、/ Fooおよび/ Barは非複合リソースです。
私は基本的にはファウラーの粗視化ロックパターンのREST実装の例を探しています:http://martinfowler.com/eaaCatalog/coarseGrainedLock.html
RESTサービスでは、バージョンを収集し、それらをバージョンを表す一意に生成されたIDをキーとするマップに入れることができますか?それをクライアントに送って、編集後に送り返してもらえますか?次に、そのidを使ってエンティティのグラフのバージョンを取得できます。 –