質問

私は NHibernate を初めて使用します (NHibernate を使用した最初の大きなプロジェクトです)。
私は、オブジェクトまたはオブジェクトのリストを取得するために using ブロック内に ISession オブジェクトを作成するという単純なデータ アクセス方法を使用していましたが、その方法では、コード ブロックを終了した後にセッションが破棄されました。

ただし、これは遅延読み込みが必要な状況では機能しません。
たとえば、Orders のコレクションであるプロパティを持つ Customer オブジェクトがある場合、遅延ロードを試行すると Hibernate 例外が発生します。
別の方法を使用している人はいますか?

他のヒント

をチェックしてください 夏冬眠 素晴らしいチュートリアルのウェブキャスト...あなたが特に探しているものは、ウェブソード 5 または 6 までは提供されません。

作業単位全体にわたってセッションを開いたままにしてください。セッションの存続期間が短すぎる場合、セッション レベルのキャッシュ (これは重要です) の恩恵を受けることができません。データベースへの往復を防ぐことができれば、時間を大幅に節約できます。また、遅延読み込みを利用することもできません。これを理解することが重要です。

セッションの有効期間が長すぎると、他の問題が発生する可能性があります。

これが Web アプリの場合は、おそらく session-per-httpRequest パターンで問題ありません。基本的に、これはリクエストの開始時にセッションを開き、最後にフラッシュ/クローズする HttpModule です。セッションは静的変数ではなく HttpContext.Items に保存してください。<--- 対処したくないあらゆる種類の問題が発生します。

こちらもご覧ください ライノコモンズ 作業単位の実装用。

Web アプリ (おそらく ASP.NET を使用) を開発しているので、チェックしてください。 ASP.NET を使用した Hibernate のベスト プラクティス コードプロジェクトにて。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top