session.clear()是必要的吗?

时间:2012-01-19 06:24:00

标签: java hibernate

我正在使用Hibernate完成所有与数据库相关的任务。 我正在使用HIbernateUTIl类来维护连接并执行类似这样的操作

Session session = null;
SessionFactory sessionfactory = HibernateUtil.getSessionFactory();
session = sessionfactory.openSession();

在finally块中的代码末尾我做

session.close();

然后我的函数结束了,在函数内部我正在触发一些查询并将结果放在arraylist中。

我的问题是:我在关闭会话后立即清除主级缓存,或者我必须用

强制清除它
session.clear()

并且如果未清除主缓存,它将保留对我的对象的引用,这将使它们无法访问以进行垃圾收集并最终导致内存丢失..请帮助

1 个答案:

答案 0 :(得分:1)

不,不需要调用session.clear()。关闭会议也会清除它。

当您有长时间运行的会话或进行批量更新(将大量实体保留在内存中)时,清除会话非常有用,可以避免出现错误或内存错误。但是,如果您只在常规交易期间保持会话开放,则无需清除。