1

セッションに ObjectContext を保存しています。現在、同じセッションに対して複数の ajax リクエストがあり、すべて ObjectContext のデータを変更しています。これらのリクエストがスレッドセーフであることを確認するにはどうすればよいですか?

次のドキュメントでは、コンテキストのネストを使用することを提案しています。誰かがこれがどのように機能するかの具体例を教えてもらえますか? または、ネストされたコンテキストがスレッドセーフなリクエストを許可する方法の説明さえあります。または、これらのケースでのベスト プラクティスのドキュメントへのリンクです。ありがとう!

https://cayenne.apache.org/docs/3.1/cayenne-guide/persistent-objects-objectcontext.html

ネスティングは、分離されたオブジェクト編集領域 (子コンテキスト) を作成するのに役立ちます。これらはすべて、中間のメモリ内ストア (親コンテキスト) にコミットするか、親に既に記録されている変更に影響を与えずにロールバックする必要があります。カスケード GUI ダイアログ、または同じセッションに送られる並列 AJAX リクエストを考えてみてください。

編集:ドキュメントで次の段落が見つかりました。

データベースからオブジェクトをフェッチするためだけに使用され、オブジェクトがアプリケーションによって変更されることのないコンテキストは、複数のユーザー (および複数のスレッド) 間で共有できます。変更されたオブジェクトを格納するコンテキストには、1 人のユーザーのみがアクセスする必要があります (たとえば、Web アプリケーションのユーザーは、同じ HttpSession 内の複数の Web 要求間でコンテキスト インスタンスを再利用し、コミットまたは変更を決定するまで、オブジェクトへのコミットされていない変更を要求から要求へと運ぶ可能性があります)。それらをロールバックします)。1 人のユーザーであっても、複数の ObjectContext を使用することは理にかなっている場合があります (たとえば、オブジェクトを個別に変更およびコミットするブラウザーからの同時要求を許可する要求スコープのコンテキスト)。

4

1 に答える 1