首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于hibernate数据分页时分的一点看法

2012-10-25 
关于hibernate数据分页时候的一点看法用hibernat进行分页我们可以有两种分法,一种是首先查询出记录总数,然

关于hibernate数据分页时候的一点看法
用hibernat进行分页我们可以有两种分法,一种是首先查询出记录总数,然后再分页从数据库取值.还有一种就是直接把所有数据都取出,然后在前台或者是service中间分页.第一种方式我们就不谈了.说一下第二种.

这种方式分页,为了是页面显示的数据保持最新的状态,实际上每一次分页数据的请求都要再通过hibernate去数据库查询一次.但是由于hibernate由自己的缓存的关系,所以应该实际上的于数据库的交互量应该不是看起来的那么大.

而实际上估计大家在分页的时候都是选用第一种进行的分页.有没有人配合hibernate的缓存来使用过第二种得分页方式过?
我觉得在hibernate的缓存设置的好的前提下,第二种的配置方式对数据库的压力有可能更小一些.然后实际上服务器端的性能也更容易扩展一些,在这种情况下,固然hibernate的缓存多耗了应用服务器资源,但是整体性能应该能更好一些吧?

自己没有做过服务器相关的测试,倒是做了上述的web应用的例子,想自己测试一下.就是暂时还没有想到用什么工具和方法来测试比较好. 1 楼 ray_linn 2008-11-01   buaalijie 写道用hibernat进行分页我们可以有两种分法,一种是首先查询出记录总数,然后再分页从数据库取值.还有一种就是直接把所有数据都取出,然后在前台或者是service中间分页.第一种方式我们就不谈了.说一下第二种.

这种方式分页,为了是页面显示的数据保持最新的状态,实际上每一次分页数据的请求都要再通过hibernate去数据库查询一次.但是由于hibernate由自己的缓存的关系,所以应该实际上的于数据库的交互量应该不是看起来的那么大.

而实际上估计大家在分页的时候都是选用第一种进行的分页.有没有人配合hibernate的缓存来使用过第二种得分页方式过?
我觉得在hibernate的缓存设置的好的前提下,第二种的配置方式对数据库的压力有可能更小一些.然后实际上服务器端的性能也更容易扩展一些,在这种情况下,固然hibernate的缓存多耗了应用服务器资源,但是整体性能应该能更好一些吧?

自己没有做过服务器相关的测试,倒是做了上述的web应用的例子,想自己测试一下.就是暂时还没有想到用什么工具和方法来测试比较好.


the cache will not work unless you might load the objects by ID. 2 楼 buaalijie 2008-11-01   ray_linn 写道buaalijie 写道用hibernat进行分页我们可以有两种分法,一种是首先查询出记录总数,然后再分页从数据库取值.还有一种就是直接把所有数据都取出,然后在前台或者是service中间分页.第一种方式我们就不谈了.说一下第二种.

这种方式分页,为了是页面显示的数据保持最新的状态,实际上每一次分页数据的请求都要再通过hibernate去数据库查询一次.但是由于hibernate由自己的缓存的关系,所以应该实际上的于数据库的交互量应该不是看起来的那么大.

而实际上估计大家在分页的时候都是选用第一种进行的分页.有没有人配合hibernate的缓存来使用过第二种得分页方式过?
我觉得在hibernate的缓存设置的好的前提下,第二种的配置方式对数据库的压力有可能更小一些.然后实际上服务器端的性能也更容易扩展一些,在这种情况下,固然hibernate的缓存多耗了应用服务器资源,但是整体性能应该能更好一些吧?

自己没有做过服务器相关的测试,倒是做了上述的web应用的例子,想自己测试一下.就是暂时还没有想到用什么工具和方法来测试比较好.


the cache will not work unless you might load the objects by ID.
对,我就是把排序,条件检索之类的也挑了一部分到service中来做. 3 楼 风花雪月饼 2008-11-02   为了追求速度而提升服务器宕机的几率?

估计这个事情没几个人敢做,这就是为什么都用第一种的原因。 4 楼 EXvision 2008-11-08   Hibernate分页使用的是sql方言,物理分页,针对不同的数据库会有不同的优化。
iBatis是逻辑分页,效率会差一些。

所以尽情的用第一种方法吧。 5 楼 duduli 2009-03-04   第一种方法:内存消耗少点,但是对数据库的查询缺执行了2次,第一找到table中总数,第二次则是找到在那个范围中的数据段,次中方法适合用于数据总数不多的table。第二中方法完全是一内存为代价的,如果说数据字段多的话,而同时查询的人多的话,那么服务器肯定是吃不消的。但是其有点则是速度快,在数据库中只查询了一次,但是当数据字段多的时候则需要考虑用第一种方法了。

热点排行