请教:Hibernate分页的好办法

oO临时工Oo 2011-03-30 05:54:28
本人现在使用的方法如下,下面是一个持久层的DAO:

public class TbtagDAO extends DefaultDAO {

/**
*分页时:每页显示记录条数
*/
public Integer numPP = 20;

/**
* 当执行查询操作后,count将记录按当前查询条件查询到的结果的总条数
*/
private Long count = 0L;
/**
* 按页查询所有标签记录
* @param page - 页码
* @param numPP - 每页记录数
* @return
*/
public List findAll(Integer page,Integer numPP) {
log.debug("finding all Tbtag instances");
try {
if(page<0){
page = 1;
}

String queryString = "from Tbtag";
Session session = getSession();

String sql = "select count(tag_id) from Tbtag";
Query query = session.createSQLQuery(sql);
BigInteger c = (BigInteger)query.uniqueResult();
this.count = c.longValue();

Query queryObject = session.createQuery(queryString);
queryObject.setFirstResult((page-1)*numPP);
queryObject.setMaxResults(numPP);

return queryObject.list();
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}
}


在上面类中的private Long count = 0L;由于我要在JSP页面上输出分页和页码,就是[首页,第一页,第二页....第N页,尾页]这样的东西,所以需要预先知道一共有多少页,这就要在每次查询时要先查询记录总数,并根据每页记录数来计算总共有有多少页.

存在问题:就是每次都要查询记录总数,貌似会做很多重复的查询.
求解:是否有办法解决或改进上面提出的问题.或者有其它更好的分页办法,不一定非使用hibernate
...全文
69 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oO临时工Oo 2011-06-25
  • 打赏
  • 举报
回复
回复调试中~~~

===================================================================================
==-=-=-=-==-=-=-=-=-=- System.out.println("Hello World!"); -=-=-==-=-=-=-=-=-=-=-==
===================================================================================
oO临时工Oo 2011-06-25
  • 打赏
  • 举报
回复
回复调试中~~~

===================================================================================
==-=-=-=-==-=-=-=-=-=- System.out.println("Hello World!"); -=-=-==-=-=-=-=-=-=-=-==
===================================================================================
oO临时工Oo 2011-03-30
  • 打赏
  • 举报
回复
继续等待解决方案...
Gray_Sky 2011-03-30
  • 打赏
  • 举报
回复
分页大体来说有两种思路:

第一就是全部加载数据,然后在页面上给做分页动作。
第二就是写分页语句,每次去数据库取就只取目标范围内的数据。

hibernate应该用的第一种方法。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧