我正在使用 Hibernate 来完成所有与数据库相关的任务。 我正在使用 HIbernateUTIl 类来维护连接并执行类似这样的操作
Session session = null;
SessionFactory sessionfactory = HibernateUtil.getSessionFactory();
session = sessionfactory.openSession();
在我做的 finally block 中的代码末尾
session.close();
然后我的函数结束,在函数内部我触发一些查询并在 arraylist 中获取结果。
我的问题是:是在我关闭 session 后立即清除一级缓存还是我必须用
强行清除它session.clear()
如果未清除主缓存,它是否会保留对我的对象的引用,这将使它们无法进行垃圾回收并最终导致内存丢失。请帮助
最佳答案
不,不需要调用 session.clear()
。关闭 session 也会清除它。
当您有长时间运行的 session 或进行批量更新时,清除 session 非常有用,这会将大量实体保留在内存中,以避免出现内存错误。但是,如果您只在典型事务期间保持 session 打开,则不需要清除。
关于java - session.clear() 是必要的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8921887/