posts - 431,  comments - 344,  trackbacks - 0

          query.scroll()和query.setMaxResults();query.setFirstResult()
          這這兩種方法都可以取到一定范圍內的數據,用來數據分頁顯示。那么那種方法更好呢?

          scroll是用JDBC2.0的可滾動結果集實現;query.setMaxResults();query.setFirstResult()是數據庫SQL語句實現。

          在數據庫進行分頁是首選的方式。數據庫分頁實際上是利用數據庫本身SQL擴展的功能進行分頁,例如MySQL的 limit 0,50這樣的SQL語句。不但速度快,而且非常節省內存。不過不是每種數據庫的都有這種分頁支持的SQL,例如SQL Server就不支持。

          scroll是利用JDBC2.0的功能做分頁的,那么就完全取決于特定數據庫的JDBC Driver的實現了。事實上大部分JDBC Driver都是把所有的結果集都一次取到內存,然后再分頁的。如果這個結果集非常大,例如幾萬條,不但程序執行速度會很慢,而且很容易導致out of memory。當然個別JDBC Driver使用了服務器端游標來實現,那么就不會導致這種問題,例如jTDS。

          posted on 2007-12-26 23:13 周銳 閱讀(3076) 評論(1)  編輯  收藏 所屬分類: Hibernate
          主站蜘蛛池模板: 哈尔滨市| 江川县| 防城港市| 曲麻莱县| 屏山县| 莆田市| 交口县| 化州市| 呼玛县| 临西县| 罗定市| 乐山市| 仪陇县| 类乌齐县| 繁昌县| 彰武县| 柳江县| 炎陵县| 陵水| 宜兰县| 徐水县| 志丹县| 武威市| 湖南省| 磐安县| 灵丘县| 红原县| 娄烦县| 岳阳县| 龙井市| 阿城市| 丹江口市| 阿勒泰市| 大荔县| 额尔古纳市| 水富县| 江源县| 延吉市| 文成县| 龙岩市| 枣庄市|