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

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

setMaxResults与SQL中的LIMIT相同 – 您正在设置要返回的最大行数 。 当然这是一个非常常见的用例。

setFetchSize是关于优化的 ,它可以改变Hibernate如何将结果发送给调用者(例如:以不同大小的块缓冲)。 所有数据库驱动程序都不实现setFetchSize。

setMaxResults限制了查询结果的数量。

setFetchSize通知jdbc驱动程序在一个块中返回多less行,用于大型查询。 假设你想要1000行。 如果将抓取大小设置为100,那么数据库将返回100,然后当您需要更多数据时返回100,依此类推。 如果您的驱动程序不支持setFetchSize不会执行任何操作。

例如,该表有100个logging。

请find以下几点

criteria.setMaxResults(25); :它只能从100条logging中获取25条logging。

criteria.setFetchSize(20); :每次读取20条logging,直到从表中读取100条logging。