我正在使用Hibernate完成所有与数据库相关的任务。 我正在使用HIbernateUTIl类来维护连接并执行类似这样的操作
Session session = null;
SessionFactory sessionfactory = HibernateUtil.getSessionFactory();
session = sessionfactory.openSession();
在finally块中的代码末尾我做
session.close();
然后我的函数结束了,在函数内部我正在触发一些查询并将结果放在arraylist中。
我的问题是:我在关闭会话后立即清除主级缓存,或者我必须用
强制清除它session.clear()
并且如果未清除主缓存,它将保留对我的对象的引用,这将使它们无法访问以进行垃圾收集并最终导致内存丢失..请帮助
答案 0 :(得分:1)
不,不需要调用session.clear()
。关闭会议也会清除它。
当您有长时间运行的会话或进行批量更新(将大量实体保留在内存中)时,清除会话非常有用,可以避免出现错误或内存错误。但是,如果您只在常规交易期间保持会话开放,则无需清除。