JPA分页:setFirstResult()和setMaxResults():真正的分页?

时间:2015-06-11 06:40:01

标签: java jpa pagination

JPA setFirstResult()和setMaxResults()方法是否正在进行真正的分页?我的意思是从数据库的角度来看?不是吗?

例如,如果查询返回1000000行,并且我使用1000页的那些方法进行分页,那么数据库最终是否会被查询1000或1000000行?

我的观点是:那些那些方法是为了限制检索的条目数量来限制Java程序中查询结果的内存占用量,还是它们也可以作为一种方式DBMS更保守?

1 个答案:

答案 0 :(得分:2)

它既是JPA实现又是数据库特定的,但一般来说它是一种愚蠢的方法,例如使用OFFSET / LIMIT或类似的机制(基于Hibernate的实现)。

如果数据库能够以某种方式提高效率,那么相应的JPA机制也相应有效。如果没有(例如Postgres),那么你最好推出自己的分页机制。