2 breakorcontinue breakorcontinue 于 2016.02.03 14:53 提问

Hibernate分页效率问题 1C

项目中使用了公司封装的数据库操作jar,但Hibernate分页效率总是不高,怀疑底层是先查后分页的情况,底子不好 各位大神劳烦看下 是先查询后分的页吗?(请先回答此问题)
有什么优化建议没?
sqlstr 为sql语句,mapps为条件

  public Map getList(String sqlstr, Map mapps, int iPageNo, int iPageSize) throws DAOException

{
HibernateCallback callback = new HibernateCallback(this, sqlstr, mapps, iPageNo, iPageSize) { final HibernatePersistenceManager this$0;
private final String val$sqlstr;
private final Map val$mapps;
private final int val$iPageNo;
private final int val$iPageSize;

  public Object doInHibernate() throws HibernateException, SQLException { Query query = this.this$0.getHibernateTemplate().createQuery(session, 
      this.val$sqlstr);
    List list = new ArrayList();

    if ((this.val$mapps != null) && (!(this.val$mapps.isEmpty()))) {
      Iterator it = this.val$mapps.keySet().iterator();
      while (it.hasNext()) {
        String numStr = (String)it.next();
        int num = Integer.parseInt(numStr);
        query.setParameter(num, this.val$mapps.get(numStr));
      }

    }

    this.this$0.setPageNo(this.val$iPageNo);
    this.this$0.setPageSize(this.val$iPageSize);
    if ((this.val$mapps != null) && (!(this.val$mapps.isEmpty())))
      this.this$0.setQueryPage(query, this.val$mapps);
    else
      this.this$0.setQueryPage(query);

    list = query.list();

    Map map = new HashMap();

    map.put("RecTotal", this.this$0.getRecTotal());
    map.put("PageTotal", this.this$0.getPageTotal());
    map.put("List", list);

    return map;
  }

};
return ((Map)getHibernateTemplate().execute(callback));

}

1个回答

caozhy
caozhy   Ds   Rxr 2016.02.03 22:35

服务器端分页用存储过程,hibernate绑定
参考:http://www.docin.com/p-660794652.html

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
hibernate底层的分页如何提高查询速度?
待完成
Hibernate分页可能引起的性能问题
   在使用Hibernate进行分页的过程中,如果你收到如下警告,那么这里就是一个潜在的性能问题点:WARNING: firstResult/maxResults specified with collection fetch; applying in memory!  出现这个警告的直接后果是:无论你想要看第几页的数据,从Hibernate打印出的SQL来看它总是查询了所有满足条件的结
★★ Oracle(分页效率问题)及其它数据库分页
数据库分页大全(oracle利用解析函数row_number高效分页)
oracle 分页效率 比较
Oracle数据库中的优化器又叫查询优化器(Query Optimizer)。它是SQL分析和执行的优化工具, 它负责生成、制定SQL的执行计划。Oracle的优化器有两种,基于规则的优化器(RBO)与基于代价的优化器(CBO) RBO: Rule-Based Optimization 基于规则的优化器 CBO: Cost-Based Optimization 基于代价的优化器
使用hibernate前后的效率对比
      本文只从实验层面对使用hibernate前后数据操作做了测试,并记录测试数据,以直观的形式对效率做了对比。 下面对试验环境进行简要的说明:      硬件: CPU,E6500,2.33GHZ; 内存,DDR2,2G;      操作系统: WinXP HOME版;      数据库软件:MySQL5.1.46; java下MySQL驱动,mysql-connect
浅谈ORDER排序对HIBERNATE分页查询的影响
hql = hql + " ORDER BY isSystem";         hql4Tot =hql4Tot+" ORDER BY isSystem";                  Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(hql);
Hibernate HQL分页时下一页和本页数据重复的解决
http://blog.csdn.net/polohoho1/article/details/9283957
hibernate 分页效果(可以跳转)
注意事项:若调用分页的实体类:hql查询的sql语句  一定要和自己写的查询参数对应 1.先定义一个分页的实体类pager package com.hotel.pojo; import java.util.List; public class Pager {  private int page;// 当前页码  private int pageTotal;// 总页码
解决使用HIBERNATE对ORACLE数据库中数据进行排序分页错乱的问题
在使用SHH进行J2EE轻量级项目开发时,用到了oracle9i的数据库,但是在对表中的数据进行排序分页时,有时会莫名其妙的出现排序错乱,翻页后数据显示重复的问题。开始以为是hibernate的问题,跟踪代码将hibernate生成的sql语句输出到控制台然后在PL/SQL中执行,发现生成的sql语句有点问题,执行的结果数据集根本就不对,就是Hibernate的问题,但是这个问题很容易就被发现,毕
hibernate一对多关联查询去重 criteria设置 解决分页条数不正确的问题
Criteria criteria=classroomDao.getCriteria(new classroom()); criteria.setFetchMode("studentList", FetchMode.SELECT); criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);后来在一对多 多对一的另一种情况下,发现此代码