Hibernate:我们到底需要在哪里关闭SessionFactory对象

Hibernate:我们到底需要在哪里关闭SessionFactory对象,hibernate,sessionfactory,Hibernate,Sessionfactory,我正在为我的应用程序使用Hibernate 3版本 在阅读有关Hibernate的教程时,我发现,SessionFactory应该只为应用程序创建一次。 为此,我决定在类中使用一个静态块和一个静态方法来返回它,如图所示 public class SessionFactoryInitiliaztion { static { try { sessionFactory = new Configuration().configure().buildSess

我正在为我的应用程序使用Hibernate 3版本

在阅读有关Hibernate的教程时,我发现,
SessionFactory
应该只为应用程序创建一次。 为此,我决定在类中使用一个静态块和一个静态方法来返回它,如图所示

public class SessionFactoryInitiliaztion {
    static {
        try {
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Exception x) {
            x.printStackTrace();
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

我到底需要在哪里关闭这个
会话工厂
对象,以便它重新销售内存?

我想不出任何理由(立即)为什么您希望在应用程序存在时关闭会话工厂,所以我不会太担心回收内存。当您的应用程序关闭时,我会将其关闭。

这似乎是一个错误,但是对于“不推荐”的配置,sessionFactory会正确关闭:

    Configuration configuration = new Configuration().configure();
    sessionFactory = configuration.buildSessionFactory();

你可以考虑春天。另外,请阅读Spring和Hibernate的会话管理。可能只要应用程序在退出时运行else。可以参考更多详细信息。谢谢,但我不使用Spring来实现此应用程序,它基于servlet、JSP、Hibernate和MYSQL。使用servlet,您最好使用servlet上下文侦听器()在应用程序启动时打开SessionFactory,在应用程序关闭时关闭SessionFactory。您误解了我的问题,我想在应用程序存在时关闭它,所以我可以在servlet destroy方法中这样做,或者是否有合适的地方关闭Hibernate sessionFactory对象。抱歉,是的,这是您应该关闭它的地方,在destroy()中,在servlet destroy方法中执行它假定您只有一个servlet,并且它不是池。更好的选择是使用ServletContextListener是的,我不应该假设这是如何设置的。