NHibernate SessionFactory

时间:2009-08-14 13:19:56

标签: c# nhibernate

他们说在NHibernate中构建一个会话工厂是昂贵的,它应该只发生一次。我对此使用单例方法。这是在第一次请求会话时完成的。

我的问题:你是否应该每次都关闭Session工厂?如果是这样,人们什么时候会这样做?

4 个答案:

答案 0 :(得分:6)

这就是我用Java做的Hibernate:

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

}

你可以在你不再需要时释放你的SessionFactory我想,但老实说我从来没有关闭过我的会议工厂

答案 1 :(得分:2)

到AZ:这是指SessionFactory,而不是会话。虽然我不会说只应该有一个SessionFactory实例。每个唯一配置应该有一个。例如,如果单个应用程序连接到2个不同的数据库,那么您需要2个不同的SessionFactory实例。

答案 2 :(得分:1)

不,它会因你的程序而死,这很好。

答案 3 :(得分:0)

只应有一个sessionfactory实例。上面的代码不是单例模式的示例。 如果您正在使用企业应用程序,我建议将Spring与hibernate一起使用。 这将有助于您管理交易并消除管理会话工厂的所有麻烦