Java と Hibernate を使用した Rest バックエンドがあり、バージョン プロパティで楽観的ロックを使用しています。同時実行制御のために、このバージョン プロパティはクライアントに送信され、ポスト リクエストでサーバーに送信される必要があります。ただし、JavaScript クライアントでは、このプロパティの整合性を制御できなくなります。たとえば、次のようになります。
- クライアント「A」がリソース 1 を要求します。
- クライアント「B」が同じリソースを要求します。
- サーバーはリソース 1 バージョン 1 で両方のクライアントに応答します (それぞれの応答で)
- クライアント「A」はリソースを変更し、変更を保存するためにポストを作成します。
- サーバーは POST リクエストを処理し、Hibernate はバージョン番号をチェックします。1 = 1 なので、リソースは変更されます。
- クライアント B は JavaScript をいじり、バージョン プロパティを 2 に変更し、POST リクエストを行います。サーバーは POST リクエストを処理し、現在は 2 = 2 であるため、リソースが変更され、クライアント A によって行われた変更は失われます。
これは Rest バックエンドであることを忘れないでください。したがって、各ユーザーに配信されたオブジェクトのバージョン番号をサーバーに保存することはできません。
それで、これが私が思うような有効な質問である場合、クライアントでバージョンが不変であることをどのように保証できますか?