2010-12-01 7 views

答えて

4

はい、NHibernateデスクトップアプリケーションは、通常複数のセッションを使用する必要があります。

2段階のシナリオでは、特定の「ビュー」や「画面」など、論理的な「セッションのやりとり」ごとにセッションを使用します。ここでは、セッションをWebアプリケーションよりも長く維持し、遅延ロードの利点を十分に生かすことができますが、ユーザーが「保存」または「キャンセル」して別の場所に移動することを望む時点でセッションを終了するにはしばしば良い場所です。

アプリケーション全体で単一のセッションを使用すると、大量のデータがキャッシュされ、クライアント側のデータが古くなったり、同時実行性の問題が発生する可能性があります。

さらに、セッションで例外が発生すると、セッションはもはや有効でなくなり、実行していた作業を放棄またはリセットする必要があります。これが1つのフォームであれば大したことではありませんが、アプリケーション全体で同じセッションを参照するオブジェクトがたくさんある場合、それらはすべて妥協した状態になります。

+0

例外の後にセッションをクリーンアップする適切な手順は何ですか? –

+0

@Tom NHのドキュメンテーションによると、 'Sessionが例外をスローするとすぐにトランザクションをロールバックし、Session.Close()をコールして、そのSessionのインスタンスを破棄する必要があります。 – Jay

1

はい。セッションは、作業単位とみなされるため、できるだけ短命でなければなりません。

したがって、私は 'ユースケース'ごとにセッションを作成します。 (ユースケースは複数の形式にまたがることができます)。

関連する問題