一、hibernate的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。
三 JDBC2.0
在JDBC1.0中,光标只能利用next方法向前移动一条记录,在2.0中,增加了可滚动结果集,使其可以任意跳转。
next()下一条,true/false
previous()前一条,true/false
first()第一条true/false
last()最后一条true/false
beforeFirst()第一条之前true/false
afterLast()最后一行后面true/false
absolute(int num)移动到指定行,若指定为负数,则从最后一行向前移动。
Relative( int relativeRowNumber)移动到当前行的相对行,参数可以为负数,指当前行之前的行。
在使用可滚动结果集方法移动时,如果不清楚当前位置,可以使用如下方法:
getRow()返回当前行,若无,则0
isfirst()true/false
isLast() true/false
isBeforeFirst() true/false
isAfterLast() true/false
Statement对象创建的常见用法
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
结果集类型决定这个Statement对象创建的Rs对象是否可以滚动,是否对数据库中的修改敏感。
ResultSet.TYPE_FORWORD_ONLY(默认值),结果集的游标只能向下滚动。
ResultSet.TYPE_SCROLL_INSENSITIVE(可滚动,不敏感)结果集的游标可以上下移动,当数据库变化时,当前结果集不变。
ResultSet.TYPE_SCROLL_SENSITIVE(可滚动,敏感)返回可滚动的结果集,当数据库变化时,当前结果集同步改变。
结果集并发性决定Rs是否可以修改数据库中的行。
ResultSet.CONCUR_READ_ONLY(不可修改默认) 不能用结果集更新数据库中的表
ResultSet.CONCUR_UPDATABLE(可以修改) 能用结果集更新数据库中的表
相关推荐
一、query.scroll()和query.setFirstResult(),query.setMaxResults();这两种方法都可以取到一定范围内的数据,用来数据分页显示。那么两者区别,以及两者的效率如何? 答:1.scroll是用JDBC2.0的可滚动结果集实现;...
我改写了jquery.scroll-follow.js。可以支持最近版本的jquery类库(1.7.2)
前端项目-jquery.scroll4ever,jQuery infinite scroll plugin
Picture viewer with scrolling area... Scroll picture with scroll bars or mouse...
第七讲.(下)Jquery.Mobile插件.scroll.js.下拉更新插件
better-scroll.js
xiii.scroll.js 可以平滑滚动到指定位置JavaScript库 功能 XIII.scroll(target:Element, targetDuration:Number = 1):void XIII.scroll(targetElementId:String, targetDuration:Number = 1):void XIII.scroll...
jquery endlessEndless Scroll.rar jquery endlessEndless Scroll.rar
jquery-scrolla是一款页面滚动触发动画插件。jquery-scrolla插件可以在页面向下或向上滚动时,进入视口的元素会触发指定的CSS3动画。它和animate.css完美结合,可以执行animate.css中的任何CSS3动画效果。
jquery.infinitescroll滑动加载更多的demo小案例。。。。
该插件支持各种浏览器,同时可以允许全屏滚动或者指定CLASS进行元素滚动。 亲自测试,谷歌、火狐、Opera、IE 都是可以的,如果不符合...-------js/jquery.scroll.js -------js/jquery.scroll.min.js -------demo.html
smoothScroll.js 是极小的,符合标准的平滑滚动脚本,无依赖,支持 Firefox, Chrome, IE10, Opera 和 Safari。使用:[removed][removed]示例:var smoothScroll = require('smoothscroll'); var exampleBtn = ...
infinitescroll,滑动加载更多,压缩包内容为插件演示示例、常用参数介绍和使用注释
页面视差滚动切换jquery.localscroll插件是一款让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验。
jquery.inifinite.scroll 简单的jQuery无限滚动
js中window.scroll与window.onmousewheel区别-附件资源
页面视差滚动切换jquery.localscroll插件源码.zip 页面视差滚动切换jquery.localscroll插件源码.zip 页面视差滚动切换jquery.localscroll插件源码.zip
侧栏固定式网页框架,很好的运用了 CSS+ jQuery的特性,左侧栏,是不会随着滚动条而滚动的,当你拖动滚动条的时候,右侧主体区的内容跟着拖动,但左侧的菜单始终固定不动,像一个被固定的层一样。
Scroll Bar 11. Scroll Pane 12. List View 13. Table View 14. Tree View 15. Tree Table View 16. Combo Box 17. Separator 18. Slider 19. Progress Bar and Progress Indicator 20. ... ... 等共40章