2009-08-14 9 views
3

彼らは、NHibernateでセッションファクトリを構築するのは高価で、一度だけ行うべきだと言います。私はこれについてシングルトンアプローチを使用します。これは、セッションが初めて要求されたときに実行されます。NHibernate SessionFactory

私の質問:セッションファクトリを閉じるべき時間がありますか?もしそうなら、これをいつ行うのでしょうか?

答えて

6

これは私がHibernateでJavaで何をすべきかです:

public class HibernateUtil 
{ 

    private static final SessionFactory sessionFactory; 

    static 
    { 
     try 
     { 
      // Create the SessionFactory from hibernate.cfg.xml 
      sessionFactory = new Configuration().configure().buildSessionFactory(); 
     } 
     catch (Throwable ex) 
     { 
      // Make sure you log the exception, as it might be swallowed 
      System.err.println("Initial SessionFactory creation failed." + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static SessionFactory getSessionFactory() 
    { 
     return sessionFactory; 
    } 

} 

あなたは私が推測するもうそれを必要としませんが、正直なところ、私は私のセッションファクトリ

+2

.NETでほとんど同じことをしています。 FluentNHibernateのため、構成のみが少し異なります。 –

1
を閉じたことがないときは、あなたのSessionFactoryを解放することができます

いいえ、それはあなたのプログラムで死んで、それは問題ありません。

0

sessionfactoryのインスタンスは1つだけでなければなりません。上のコードは、シングルトンパターンの例ではありません。 エンタープライズアプリケーションで作業している場合は、Springを休止状態で使用することをお勧めします。 これは、トランザクションの管理に役立ち、セッションファクトリを管理するというこの頭痛を取り除きます。

2

To AZ:これはセッションではなくSessionFactoryを指しています。私は、SessionFactoryのインスタンスが1つだけであるべきだとは言いませんが。一意の構成につき1つが必要です。たとえば、1つのアプリケーションが2つの異なるデータベースに接続している場合、2つの異なるSessionFactoryインスタンスが必要です。

+0

このコメントを、AZの投稿にコメントとして追加します。質問に対する回答ではありません。回答は質問に対する回答であり、他の回答に対するコメントではありません。 – Phil

関連する問題