org.hibernate.Query中setMaxResults和setFetchSize有什么区别?

时间:2011-05-22 11:49:00

标签: java hibernate

org.hibernate.Query中setMaxResultssetFetchSize之间有什么区别?我只是不能得到它=)

3 个答案:

答案 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条记录。