getResultList()的问题

时间:2012-06-06 09:42:37

标签: hibernate

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

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

我确实在两行代码上都放了定时器,我发现查询需要0.02秒才能获取x行数(与通过数据库客户端运行时运行的时间相同)。但是,大部分时间是由第二行占用,即获取列表(getResultList())。我开始认为这是否正常,并且通过使用getResultList实际上降低了应用程序的性能。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

  

获取0.02秒可以说x行数(与通过数据库客户端运行时运行的时间相同)

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

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

我使用ehcache

答案 1 :(得分:0)

我同意@NimChimpsky 0.02并不是那么糟糕。

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