我有两个问题:
- Spring 什么时候关闭 Spring Container 创建的 SessionFactory 类(SessionFactory 是在容器中定义的)?
 - Hibernate 默认维护主缓存。缓存的范围是否仅限于会话或 sessionFactory?我的意思是,主缓存的内存什么时候释放?
 
Spring 什么时候关闭 Spring Container 创建的 SessionFactory 类(SessionFactory 是在容器中定义的)?
当您关闭ApplicationContext(取消部署 Web 应用程序,正常关闭 JVM 等)时,它会自动完成。当容器关闭时,它会从所有 bean 的接口调用destroy()方法。DisposableBean其中一种方法定义在LocalSessionFactoryBean:
public void destroy() {
    this.sessionFactory.close();
}
您根本不必为此烦恼。
Hibernate 默认维护主缓存。缓存的范围是否仅限于会话或 sessionFactory?我的意思是,主缓存的内存什么时候释放?
“主”缓存称为一级缓存,与会话相关联。二级缓存是全局的SessionFactory,但是在关闭时它不会被释放,SessionFactory因为很可能您正在使用一些外部缓存提供程序,例如ehcache。如果是这种情况,EhCache 也必须关闭以释放该内存。但是如果使用 EhCache 支持,这也应该由 Spring 容器处理。