3

同じセッションで頻繁にアクセスされる大きなエンティティがいくつかあります。たとえば、私のアプリケーションには、動的に生成されたチャート画像で構成されるレポート ページがあります。このページのチャート画像ごとに、クライアントは対応するコントローラーにリクエストを行い、コントローラーはいくつかのエンティティを使用して画像を生成します。これらのエンティティを「キャッシュ」するために asp.net のセッション ディクショナリを使用するか、たとえばキャッシュされたクエリを使用して nhibernate の第 2 レベルのキャッシュ サポートに依存することができます。

あなたの意見は何ですか?

ところで、共有ホスティングを使用しますが、nhibernate の 2 次キャッシュ ホスティングは使いやすいですか?

ありがとう。

4

2 に答える 2

2

NHibernate のキャッシュを使用する必要があると思います。ユーザーが各エンティティを 1 つずつ取得するために個別の要求を行う場合は、おそらく異なる NHibernate ISession 実装を使用してそれらを取得する必要があります (Web 要求ごとのセッション戦略のため)。

また、Nhibernate キャッシュを使用すると、同時実行性の問題に悩まされることはありません。問題は処理されます。

于 2010-04-19T09:14:48.013 に答える
0

エンティティを (読み込み元のセッションから) 静的変数にキャッシュし、別のセッションからアクセスされることに注意してください (たとえば、作成したキャッシュ システムからプルされます)。

エンティティ インスタンスはセッションの記憶に関連付けられているため、セッションの境界を越えてインスタンスを混在させたり一致させたりしないでください。

クラスの軽量バージョン (NH セッションに対応していない) を作成し、代わりにその基本クラスをキャッシュすることで、以前にこれを解決しました。

または、この問題のない 2 次キャッシュを使用します。

于 2012-09-02T12:23:31.473 に答える