我正在对休眠的一组结果进行分页。目前我正在做
long count = getCountResultForNamedQuery();
List result = getResultForNamedQuery()
这两个查询类似于
select count(*) from addresses where country = 'USA';
和
select * from addresses where country = 'USA';
对于分页,我通常会更新 getResultForQuery 以便设置 .setFirstResult 和 setMaxResult 。这将只返回我想要的部分。我必须进行计数,以便知道要在页面的分页部分显示多少页。
我想知道我是否可以更有效率。我能不能
List result = getResultForQuery();
int count = result.size();
List subResult = result.subList(start, end);
这有意义吗?如果可能,我试图只调用一个查询。问题是hibernate有多聪明?当我调用 size 时,它会计算它返回的对象外壳还是尝试解决所有问题然后访问数据库?使用哪种模式更好?
如果示例不够清楚,请致歉。我试图尽可能地简化它,可能已经简化得太多了!
提前致谢!