我使用 ORM 框架已经有一段时间了,不过我对 Hibernate 还是很陌生。
假设您有一个查询(是查询还是标准,无关紧要),它检索到一个很好的结果集,并且您想通过它进行分页。您宁愿使用 setMaxResult() 和 setFirstResult() 方法组合,还是使用 ScrollableResult?
关于性能(执行时间和内存消耗)的最佳方法是什么?
如果您正在实现一个 Web 应用程序,该应用程序在单独的请求-响应周期中提供单独的结果页面,那么您将无法利用ScrollableResult
任何优势。使用 setFirst/Max/Result。但是,这可能是一个真正的性能杀手,具体取决于确切的查询和结果的总大小。特别是如果可怜的数据库必须每次都对整个结果集进行排序,这样它就可以计算出第 100-110 条记录是什么。
前几天我们也有同样的问题,然后解决了setMaxResult(..)
和setFirstResult(..)
。问题有两个:
ScrollableResult
next()
如果您的 jdbc 驱动程序或数据库未正确处理它,则可能会为每次调用执行一个查询。我们就是这种情况(MySQL)