我一直在使用ORM框架,但我对Hibernate很新。
假设您有一个查询(无论是查询还是标准,无关紧要),它会检索一个很棒的结果集,并且您希望通过它进行分页。您更愿意使用setMaxResult()和setFirstResult()方法组合,还是使用ScrollableResult?
关于性能(执行时间和内存消耗)的哪种方法最好?
答案 0 :(得分:2)
如果您实现的Web应用程序在单独的请求 - 响应周期中提供单独的结果页面,那么您无法使用ScrollableResult
获得任何优势。使用setFirst / Max / Result。但是,这可能是一个真正的性能杀手,具体取决于确切的查询和结果的总大小。特别是如果穷人db必须每次都对整个结果集进行排序,那么它就可以计算出100-110的记录。
答案 1 :(得分:1)
我们前几天遇到了同样的问题,并为setMaxResult(..)
和setFirstResult(..)
确定了问题。问题是两个:
ScrollableResult
可能会对next()
的每次调用执行一个查询。我们就是这种情况(MySQL)