加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – HQL查询总是命中数据库并获得结果吗?

发布时间:2020-12-14 06:02:51 所属栏目:Java 来源:网络整理
导读:我正在经历hibernate以及何时使用Criteria vs HQL的情况,我的理解是使用Hibernate,每当我们在两个实例中通过Criteria或HQL查询数据库时,hibernate将得到结果集并放入内存然后当我们调用它时再次查询,数据将从内存中获取而不是点击该数据库,我的理解是否正确
我正在经历hibernate以及何时使用Criteria vs HQL的情况,我的理解是使用Hibernate,每当我们在两个实例中通过Criteria或HQL查询数据库时,hibernate将得到结果集并放入内存然后当我们调用它时再次查询,数据将从内存中获取而不是点击该数据库,我的理解是否正确?

另外正如您在下面提到的评论和问题中所看到的那样,有人建议Hibernate Criteria会从会话中获取数据,而HQL总会进入并命中数据库,因此对HQL查询的任何数量的多次调用都会进入并命中数据库,如果这是然后HQL引起的问题多于解决问题.

请对此提出建议,因为我对这种情况有点困惑.

参考question

解决方法

这取决于您正在进行的查询类型以及缓存设置.

Hibernate有三种缓存:会话缓存,查询缓存和二级缓存.会话缓存始终打开,但其他两个可以禁用.

通常,缓存不是支持Criteria API而不是HQL的原因,反之亦然.对于基本相同的东西,它们大多只是不同的接口.

见http://www.javalobby.org/java/forums/t48846.html和http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读