GETにあったバージョン番号をPUT呼び出しに戻すことにより、データベーステーブルに1対1でマッピングするRESTリソースに楽観的ロックを実装しました。GETとPUTの間にデータベースでバージョン番号が変更された場合は、楽観的なロック例外が発生しています。かなりシンプルなデザイン。
では、複数のデータベーステーブルにマップする複合RESTリソースに対して同じことを行うにはどうすればよいですか?複数のバージョンフィールド(複合リソースに関連するデータテーブルごとに1つ)を返す必要はありません。複合リソースの単純な例は/FooBarで、/Fooと/Barは非複合リソースです。
私は基本的に、ファウラーの粗視化ロックパターンのREST実装の例を探しています:http://martinfowler.com/eaaCatalog/coarseGrainedLock.html