3

我使用 ORM 框架已经有一段时间了,不过我对 Hibernate 还是很陌生。

假设您有一个查询(是查询还是标准,无关紧要),它检索到一个很好的结果集,并且您想通过它进行分页。您宁愿使用 setMaxResult() 和 setFirstResult() 方法组合,还是使用 ScrollableResult?

关于性能(执行时间和内存消耗)的最佳方法是什么?

4

2 回答 2

2

如果您正在实现一个 Web 应用程序,该应用程序在单独的请求-响应周期中提供单独的结果页面,那么您将无法利用ScrollableResult任何优势。使用 setFirst/Max/Result。但是,这可能是一个真正的性能杀手,具体取决于确切的查询和结果的总大小。特别是如果可怜的数据库必须每次都对整个结果集进行排序,这样它就可以计算出第 100-110 条记录是什么。

于 2012-04-25T13:18:03.753 回答
1

前几天我们也有同样的问题,然后解决了setMaxResult(..)setFirstResult(..)。问题有两个:

  • ScrollableResultnext()如果您的 jdbc 驱动程序或数据库未正确处理它,则可能会为每次调用执行一个查询。我们就是这种情况(MySQL)
  • 它是特定于休眠的,而不是 JPA 标准。
于 2012-04-25T13:17:45.370 回答