0

我目前正在做一个基于 Hibernate 的性能调优项目。但是,我在代码片段的以下部分面临一个问题,这大大降低了性能。以下是部分代码片段:

private EntityManager em;
Query query = em.createQuery(sQuery.toString());
List<Object> entities = query. getResultList();

我确实在两行代码上都放置了计时器,并且我看到查询需要大约 0.02 秒来获取假设 x 行数(与通过 DB 客户端运行时运行所需的时间相同)。然而,大部分时间被第二行占用,即获取列表(getResultList())。我开始考虑这是否正常,并且使用 getResultList 实际上会降低应用程序的性能。请问有什么建议吗?

4

2 回答 2

0

获取 0.02 秒让我们说 x 行数(与通过数据库客户端运行时运行所需的时间相同)

它没有休眠它的数据库调用,而且它并不慢。0.02秒将数据发送到数据库执行查询然后发送数据很快,非常快。

编辑它的四秒 显示 sql 查询的代码,优化它。然后在这样做之后,让它更快的唯一方法是在java端缓存结果。

我使用ehcache

于 2012-06-06T09:46:57.197 回答
0

我同意@NimChimpsky 0.02 并没有那么糟糕。

无论如何,您也可以尝试使用 NamedQuery,它会在应用程序启动时由 hibernate 进行预处理,并且在执行它时可能会为您节省一些时间。

于 2012-06-06T09:51:08.907 回答