Spring HibernateTemplate Session

时间:2012-05-28 13:11:52

标签: java spring hibernate caching

我有两个问题:

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

1 个答案:

答案 0 :(得分:1)

  

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

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

中定义
LocalSessionFactoryBean

你根本不必为此烦恼。

  

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

“主”缓存称为第一级缓存,并与会话绑定。第二级缓存是public void destroy() { this.sessionFactory.close(); } 的全局缓存,但在SessionFactory关闭时不会释放,因为很可能您正在使用某些外部缓存提供程序,如。如果是这种情况,还必须关闭EhCache以释放该内存。但是如果使用EhCache支持,这也应该由Spring容器处理。

另见