【发布时间】:2016-09-26 13:26:33
【问题描述】:
我正在努力提高性能。我们同时使用 Hibernate Criteria 和 Named Query 从数据库中检索数据。 在我们的应用程序中,我们从数据库中检索更多行并执行一些 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); 未按预期工作的任何建议。
【问题讨论】:
-
您可以尝试使用 Wireshark 检查到 db 的 TCP 流量,例如,以尝试了解设置获取大小之前和之后发生的情况(了解如何,如果在所有,setFetchSize 影响“网络旅行”)。