我有两个问题:
Spring何时关闭由Spring容器创建的SessionFactory类(SessionFactory在容器中定义)?
默认情况下,Hibernate维护主缓存。缓存的范围是否限于会话或sessionFactory?我的意思是,什么时候主缓存的内存被释放?
最佳答案
Spring何时关闭由Spring容器创建的SessionFactory类(SessionFactory在容器中定义)?
当您关闭ApplicationContext
(取消部署Web应用程序,正常关闭JVM等)时,它会自动完成。当容器关闭时,它将在所有bean上从destroy()
接口调用DisposableBean
方法。 LocalSessionFactoryBean
中定义了此类方法之一:
public void destroy() {
this.sessionFactory.close();
}
您完全不必为此烦恼。
默认情况下,Hibernate维护主缓存。缓存的范围是否限于会话或sessionFactory?我的意思是,什么时候主缓存的内存被释放?
“主”高速缓存称为第一级高速缓存,并绑定到会话。二级缓存是
SessionFactory
全局的,但是在SessionFactory
关闭时不会释放,因为您很可能正在使用某些外部缓存提供程序,例如ehcache。在这种情况下,还必须关闭EhCache才能释放该内存。但是,如果使用了EhCache支持,这也应该由Spring容器处理。也可以看看
Caching with Hibernate + Spring - some Questions!
关于java - Spring HibernateTemplate session ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10785249/