3

オブジェクト全体をセッションに保存することについてのあなたの考えについて、フィードバックが欲しいですか? たとえば、顧客オブジェクトです。顧客がコントロール パネルにログインすると、セッションに保存された ID からデータが必要になるたびにデータを再取得するのではなく、顧客オブジェクト全体をセッションに保存することの長所と短所は何ですか?

したがって、顧客オブジェクトを参照する必要があるときはいつでも、次のようにすることができます。

Customer c = (Customer)Session["objCustomer"];

明らかに、セッションを更新する機能をチェックして持つ必要があります。null セッションの場合、または更新が行われた後に、この関数を実行する必要があります。

それ以外に、この方法で行うことに注意する必要がある他の問題はありますか? これは、プログラミングに関してははるかに優れており、データベースへの呼び出しもはるかに少ないようです。誰か考えますか?

4

3 に答える 3

2

私は別の答えでWiktorによって説明された問題に遭遇しました。私はNHibernateを使用していますが、オブジェクトをセッションに保存すると、オブジェクトの比較や切断されたセッションの問題などが発生します。それでも、オブジェクトをセッションに保存します。それらがすべて独自のEquals()およびGetHashCode()関数を実装していることを確認します。そうすれば、異なるセッションのオブジェクトを比較して、それらが同じオブジェクトであるかどうかを確認できます。obj1.Equals(obj2)の代わりに使う習慣をつけていますobj1 == obj2

もちろん、常にトレードオフがあります。コードを複雑にするのではなく、クエリを繰り返す必要がないという速度が得られます。どちらの方法が適切かは、状況の詳細によって異なります。

于 2012-04-09T14:59:38.227 に答える
0

mellamokb 必要なプロパティを持ち込むという点に同意します。モデルを調整することでそれを行うことができます。また、遅延読み込みをオフにすることもできます。それ以外はかなり安全だと思います。これらすべてのオブジェクトを参照として保存しない限り、これらのオブジェクトがセッションに配置されると問題はありません。問題が発生する可能性があるのは、両方のコンテキストがスコープ内にある場合のみです。

于 2012-04-09T16:12:18.837 に答える