gpt4 book ai didi

java - Hibernate criteria.setFetchSize 未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 12:12:55 26 4
gpt4 key购买 nike

我正在致力于性能改进。我们使用 Hibernate Criteria 和命名查询从数据库检索数据。在我们的应用程序中,我们从数据库检索更多行并执行一些 Java 逻辑,因此我想一次从数据库获取更多行,以避免网络访问数据库。由于 Oracle 数据库的默认获取大小为 10,我已将其设置为 400 到条件对象,如下所示。

Criteria crit = getSession().createCriteria(Phone.class);
crit.setFetchSize(400);

我没有注意到响应时间有任何改善。当我在 NamedQuery 上设置更高的获取大小时,我注意到了改进,如下所示。

Query query = session.getNamedQuery("getPhoneList");
query.setFetchSize(400);

任何关于 crit.setFetchSize(400); 未按预期工作的建议。

最佳答案

我已经测试过这个问题,看来crit.setFetchSize(400);并没有限制返回的结果。但是,还有另一个有用的方法 setMaxResults(int maxResults) 可以限制数据库的返回结果。

看一下 Hibernate API 的下一个图像:

enter image description here

我用红色标记了没有执行明显请求的行为的方法,也许它与红色矩形内的第二个方法有关。

看一下绿色矩形,其方法将限制数据库的结果:

enter image description here

Criteria crit = getSession().createCriteria(Phone.class).setMaxResults(400);
List<Phone> list = crit.list();

列表的最大大小为 400。

关于java - Hibernate criteria.setFetchSize 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39704176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com