org.hibernate.Query中setMaxResults
和setFetchSize
之间有什么区别?我只是不能得到它=)
答案 0 :(得分:54)
setMaxResults
与SQL中的LIMIT
相同 - 您设置所需的最大行数。当然,这是一个非常常见的用例。
setFetchSize
是关于优化,它可以改变 Hibernate如何将结果发送给调用者(例如:缓冲,使用不同大小的块)。
所有数据库驱动程序都未实现setFetchSize
。
答案 1 :(得分:42)
setMaxResults
会限制查询获得的结果数量。
setFetchSize
告诉jdbc驱动程序在一个块中返回多少行,用于大型查询。假设您想要1000行。如果将获取大小设置为100,则db将返回100,然后在需要更多时返回100,依此类推。如果您的驱动程序不支持,setFetchSize
将无效。
答案 2 :(得分:6)
例如,如果表有100条记录,那么
criteria.setMaxResults(25);
只能从100条记录中获取25条记录,
criteria.setFetchSize(20);
每次都会获取20条记录,直到它从表中读取所有100条记录。