java - session.clear() 是必要的吗?

标签 java hibernate

我正在使用 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/

相关文章:

java - 如何对自定义整数列表进行排序? Collections.sort()?

java - 从 java.util.Date 获取年份

java - 如何循环 if else

java - Hibernate MS-SQL 错误的列类型发现 : decimal, 预期:float

java - 在布局内的 TextView 中动态设置文本 - Android

java - 线程 "main"java.lang.NoClassDefFoundError : calculator (wrong name: apackage/calculator) 中出现异常

java - Spring 启动 JPA : How to delete child entity of a Many to One relation

java.lang.NoClassDefFoundError : org/springframework/orm/hibernate3/support/HibernateDaoSupport 错误

hibernate - 加入获取一对多关系多次返回同一实体

java - 使用子类时拆分 Hibernate 配置文件(hbm.xml 文件)