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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章