【发布时间】:2026-01-18 02:00:01
【问题描述】:
听说在 session.close() 之后,本次会话中的对象将从缓存中删除。
如果“是” 那么为什么 'session2' 对象从缓存中检索对象?
当我第一次获取数据(查询执行)时,我正在关闭“session1”,数据将存储在缓存中(默认一级缓存),对! 但是,在创建 'session2' 对象之后,我仍然能够检索特定对象(没有执行查询),这意味着它正在从缓存中获取对象! ....为什么?
在图片中,我已经粘贴了我的代码 Image : my java files, table, persistent class, output
【问题讨论】:
-
您是如何得出结论的,即它与您在上一个会话中获取的对象相同????
-
因为没有为我的第二个会话的对象(对象 o = session2.load(Pojo_class.class,1))执行查询...这就是为什么我认为它是从我拥有的同一个对象中检索的从第一个会话的对象中检索(Criteria c = session1.createCriteria(Pojo_class.class); c.add(Restrictions.eq("id",1); 关于 session2 的同一个对象我错了吗?
-
检查您正在检索的对象的引用是否相同。它与规范不同。你也可以分享你创建的休眠配置。二级缓存或查询缓存是否开启???
-
没有。我的配置文件中没有启用任何缓存!.......