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