2

我有两个问题:

  • Spring 什么时候关闭 Spring Container 创建的 SessionFactory 类(SessionFactory 是在容器中定义的)?
  • Hibernate 默认维护主缓存。缓存的范围是否仅限于会话或 sessionFactory?我的意思是,主缓存的内存什么时候释放?
4

1 回答 1

1

Spring 什么时候关闭 Spring Container 创建的 SessionFactory 类(SessionFactory 是在容器中定义的)?

当您关闭ApplicationContext(取消部署 Web 应用程序,正常关闭 JVM 等)时,它会自动完成。当容器关闭时,它会从所有 bean 的接口调用destroy()方法。DisposableBean其中一种方法定义在LocalSessionFactoryBean

public void destroy() {
    this.sessionFactory.close();
}

您根本不必为此烦恼。

Hibernate 默认维护主缓存。缓存的范围是否仅限于会话或 sessionFactory?我的意思是,主缓存的内存什么时候释放?

“主”缓存称为一级缓存,与会话相关联。二级缓存是全局的SessionFactory,但是在关闭时它不会被释放,SessionFactory因为很可能您正在使用一些外部缓存提供程序,例如。如果是这种情况,EhCache 也必须关闭以释放该内存。但是如果使用 EhCache 支持,这也应该由 Spring 容器处理。

也可以看看

于 2012-05-28T13:29:39.520 回答