2009-05-29 2 views

答えて

0

NHibernateの場合、セッションファクトリの作成は非常に高価です(セッションファクトリが作成されると、おそらくはHttpApplicationにキャッシュされます)が、セッション作成は非常に安いです。言い換えれば、コードをきれいにしておくと、複数のセッション作成が必ずしも悪いことではありません。私は、NHのドキュメントが最善のことを言うと思う:

アンISessionFactoryは高価ツー作成し、すべての アプリケーションのスレッドで共有されることを意図スレッドセーフオブジェクト です。 ISessionは の安価でスレッドセーフではないオブジェクト であり、これは単一の ビジネスプロセスのために使用してから破棄する必要があります。

ので、UOWパターンを使用することにより、余分なオーバーヘッドにおそらくより効率的ではありませんが、それは良い習慣だとオーバーヘッドはおそらくあなたを傷つけるつもりはありません。時期尚早の最適化とそのすべて。

0

はい、トランザクションを使用する必要があります。 Ayendeさんのブログから:

"データベースへのすべてのアクセスがトランザクションの下で行われると仮定し、トランザクションなしでセッションの使用を強くお勧めします。詳細については

は、ここで彼のブログ投稿へのリンクです:

http://ayende.com/Blog/archive/2008/12/28/nh-prof-alerts-use-of-implicit-transactions-is-discouraged.aspx

関連する問題