ウェブページに10件のデータベースコールがあり、トランザクションなどを必要としない場合は データベースからデータを取得しているだけです(読み込み)。私は取引などを気にしないと作業単位はより効率的ですか?
データベース呼び出しごとに新しいセッションを作成するにはコストがかかりすぎますか?
ウェブページに10件のデータベースコールがあり、トランザクションなどを必要としない場合は データベースからデータを取得しているだけです(読み込み)。私は取引などを気にしないと作業単位はより効率的ですか?
データベース呼び出しごとに新しいセッションを作成するにはコストがかかりすぎますか?
NHibernateの場合、セッションファクトリの作成は非常に高価です(セッションファクトリが作成されると、おそらくはHttpApplication
にキャッシュされます)が、セッション作成は非常に安いです。言い換えれば、コードをきれいにしておくと、複数のセッション作成が必ずしも悪いことではありません。私は、NHのドキュメントが最善のことを言うと思う:
アンISessionFactoryは高価ツー作成し、すべての アプリケーションのスレッドで共有されることを意図スレッドセーフオブジェクト です。 ISessionは の安価でスレッドセーフではないオブジェクト であり、これは単一の ビジネスプロセスのために使用してから破棄する必要があります。
ので、UOWパターンを使用することにより、余分なオーバーヘッドにおそらくより効率的ではありませんが、それは良い習慣だとオーバーヘッドはおそらくあなたを傷つけるつもりはありません。時期尚早の最適化とそのすべて。
はい、トランザクションを使用する必要があります。 Ayendeさんのブログから:
"データベースへのすべてのアクセスがトランザクションの下で行われると仮定し、トランザクションなしでセッションの使用を強くお勧めします。詳細については
は、ここで彼のブログ投稿へのリンクです: