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

use*_*444 53 java hibernate

setMaxResultssetFetchSizeorg.hibernate.Query有什么区别?我就是不能得到它=)

dev*_*ife 56

setMaxResultsLIMITSQL中的相同 - 您要设置要返回的最大行数.当然,这是一个非常常见的用例.

setFetchSize为约优化,这可以改变如何休眠进入有关发送结果给调用者(例如:缓冲,在不同大小的块). setFetchSize并非所有数据库驱动程序都实现.

  • 请注意,当提取策略为JOIN时,hibernate基本上"忽略"此设置.它将获取*all*行,然后截断内存中的结果.当你看到这个警告时你会注意到:`WARN HHH000104:first collection&maxResults with collection fetch; 在记忆中应用!` (4认同)

hvg*_*des 42

setMaxResults 限制查询将获得的结果数量.

setFetchSize告诉jdbc驱动程序在一个块中返回多少行,用于大型查询.假设您想要1000行.如果将获取大小设置为100,则db将返回100,然后在需要更多时返回100,依此类推. setFetchSize如果你的司机不支持它将无能为力.


小智 7

例如,如果表有100条记录,那么

criteria.setMaxResults(25);
Run Code Online (Sandbox Code Playgroud)

只会从100条记录中获取25条记录,并且

criteria.setFetchSize(20);
Run Code Online (Sandbox Code Playgroud)

将每次获取20条记录,直到它从表中读取所有100条记录.