天天看點

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