一、query.scroll()和query.setFirstResult(),query.setMaxResults();这两种方法都可以取到一定范围内的数据,用来数据分页显示。那么两者区别,以及两者的效率如何?
答:1.scroll是用JDBC2.0的可滚动结果集实现;query.setMaxResults();query.setFirstResult()是数据库SQL语句实现。

2.你说是在数据库就分页好呢?还是把结果集都取到内存再分页好呢?(应该是在数据库就分了好些吧,但是如果在内存分页的话,换页的时候是不是更快一些呢?)

3.在数据库进行分页是首选的方式。数据库分页实际上是利用数据库本身SQL扩展的功能进行分页,例如MySQL的 limit 0,50这样的SQL语句。不但速度快,而且非常节省内存。不过不是每种数据库的都有这种分页支持的SQL,例如SQL Server就不支持。

4.scroll是利用JDBC2.0的功能做分页的,那么就完全取决于特定数据库的JDBC Driver的实现了。事实上大部分JDBC Driver都是把所有的结果集都一次取到内存,然后再分页的。如果这个结果集非常大,例如几万条,不但程序执行速度会很慢,而且很容易导致out of memory。当然个别JDBC Driver使用了服务器端游标来实现,那么就不会导致这种问题,例如jTDS。

二、Hibernate可以使用Query.setMaxResults方法简单地设置需要查询的最大结果集。
然后Hibernate会自动根据所设置的数据库方言翻译成相应的SQL语句提交给数据库。比如如果数据库是Oracle,SQL Server等,则翻译为类似select ... top 10之类的SQL语句,若是MySQL,则翻译为select ... limit 10之类的SQL。

转载于:https://www.cnblogs.com/thankyou/p/4352104.html

Hibernate中的query.setFirstResult(),query.setMaxResults();相关推荐

  1. Hibernate中的核心接口query接口用法

    Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. Query接口的用法: 通过SessionFactory获得了sessio ...

  2. 项目中技术细节(button用法、前端操作json、 hibernate的query.setFirstResult的用法注意、struts2中日期格式化标签)

    button的用法 struts2 s:iterator 中按钮获得当前行数据,并跳转 <button id="submissionz" onclick="var ...

  3. 通过query解析hibernate中的resultTransformer

    转载 http://www.iflym.com/index.php/code/resolve-hibernate-result-transformer-by-query.html 任何包装jdbc的框 ...

  4. Hibernate三种状态;query查询;ResultTransformer转换为pojo对象;可以将query语句写在xml中;Criteria查询;ProjectionList总和/f分组等函数

    Session操作过程中的pojo对象存在三种状态: 1)  瞬时态:该对象在数据库中没有对应的数据 2)  持久态:数据库中存在该对象对应的数据,同时操作该对象的Session也存在. 3)  游离 ...

  5. (2)hibernate HQL命名查询和Query接口的分页查询

    一  hql命名查询 hibernate中对动态查询参数绑定提供了丰富的支持,那么什么是查询参数动态绑定呢?其实如果我们熟悉传统JDBC编程的话,我们就不难理解查询参数动态绑定,如下代码传统JDBC的 ...

  6. Elasticsearch中的Multi Match Query

    在Elasticsearch全文检索中,我们用的比较多的就是Multi Match Query,其支持对多个字段进行匹配.Elasticsearch支持5种类型的Multi Match,我们一起来深入 ...

  7. HQL语句中数据类型转换,及hibernate中createQuery执行hql报错

    一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...

  8. hibernate(七) hibernate中查询方式详解

    序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数 ...

  9. 使用SQLQuery 在Hibernate中使用sql语句

    对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.下面来描述如何使用这个API进行查询. 1.标量查询(Scalar q ...

最新文章

  1. HDU - 6486 Flower(思维)
  2. 股骨截骨php钢板,股骨远端截骨(DFO)术前设计及手术步骤【附视频】
  3. 用番茄工作法提升工作效率 (三)工作任务的管理(系列完结篇)
  4. centos7.9使用ssh命令进行登陆云服务器
  5. mysql修改字段 新增字段
  6. ubuntu16.04 安装caffe以及python接口
  7. MQ监听 linux,RabbitMQ的安装,配置,监控
  8. 2020,国产 AI 开源框架“剑指”TensorFlow、PyTorch
  9. 四、RabbitMQ消息消费时的权衡
  10. Python入门-try-except-else-finally
  11. 3Dtouch开发内容
  12. python爬虫笔记五:汽车之家贴吧信息(字体反爬-动态映射)
  13. sencha list
  14. C#异步执行方法的几种方式
  15. Adobe CEP 常用宿主事件名
  16. 网络安全设备概念的熟悉和学习
  17. ECM麦克风电路元器件计算
  18. 大数据新手入门篇之Linux网络系统
  19. [操作系统原理与实现]Multiboot与GRUB
  20. 【3d游戏开发】使用Babylonjs+Vue3搭建属于我们的小岛

热门文章

  1. 规模数据导入高效方式︱将数据快速读入R—readr和readxl包
  2. [Flink]Flink 的物理分区器
  3. [Hive]看懂Hive的执行计划
  4. qt获取桌面路径(暂定应用Windows)
  5. Linux编辑启动停止重启springboot jar包脚本
  6. 多币种钱包开发:什么是工作量证明(POW)?
  7. [LeetCode]题解(python):038-Count and Say
  8. 使用jquery 动态操作添加/删除tr td
  9. 检查最后出现子字符串的位置!
  10. 如何拥有一个有意义的人生