这这两种方法都可以取到一定范围内的数据,用来数据分页显示。那么那种方法更好呢?
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
数据库分页与JDBC分页对比
本文探讨了数据库分页与JDBC分页两种方法的优劣。数据库分页利用SQL扩展功能如MySQL的LIMIT,速度快且节省内存;而JDBC分页依赖于特定数据库的JDBC驱动实现,可能因一次性加载大量数据到内存而导致性能问题。

537

被折叠的 条评论
为什么被折叠?



