2009-08-14 6 views
3

Sie sagen, dass der Aufbau einer Session Factory in NHibernate teuer ist und dass es nur einmal passieren sollte. Ich benutze dazu einen Singleton-Ansatz. Dies geschieht zum ersten Mal, wenn eine Sitzung angefordert wird.NHibernate SessionFactory

Meine Frage: Würde es eine Zeit geben, wenn Sie die Session Factory schließen sollten? Wenn ja, wann würde man das tun?

Antwort

6

Das ist, was ich in Java mit Hibernate tun:

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; 
    } 

} 

Sie Ihre Session befreien können, wenn Sie es nicht mehr brauche ich denke, aber ehrlich gesagt habe ich nie geschlossen meine Session Fabrik

+2

Doing fast das gleiche in .NET. Nur Konfiguration ist etwas anders wegen FluentNHibernate. –

1

Nein, es stirbt mit Ihrem Programm und das ist in Ordnung.

0

Es sollte nur eine Instanz von sessionfactory sein. Der obige Code ist kein Beispiel für Singleton-Muster. Wenn Sie in einer Unternehmensanwendung arbeiten, würde ich vorschlagen, Spring mit Ruhezustand zu verwenden. Das würde Ihnen helfen, Transaktionen zu verwalten und all diese Kopfschmerzen der Verwaltung der Sitzungsfabrik wegzunehmen

2

Zu AZ: Dies bezieht sich auf die SessionFactory, nicht die Sitzung. Allerdings würde ich nicht sagen, dass es nur eine Instanz von SessionFactory geben sollte. Es sollte eine pro eindeutige Konfiguration geben. Wenn beispielsweise eine einzelne App eine Verbindung zu zwei verschiedenen Datenbanken herstellt, benötigen Sie zwei verschiedene SessionFactory-Instanzen.

+0

Fügen Sie diesen Kommentar als Kommentar zum Post von AZ hinzu und nicht als Antwort auf die Frage. Antworten sollten Antworten auf Fragen sein und nicht Kommentare zu den Antworten anderer. – Phil

Verwandte Themen