当前位置: 代码迷 >> J2EE >> getHibernateTemplate().find(hql) 超卡,什么原因?(SSH),该如何处理
  详细解决方案

getHibernateTemplate().find(hql) 超卡,什么原因?(SSH),该如何处理

热度:186   发布时间:2016-04-22 02:54:11.0
getHibernateTemplate().find(hql) 超卡,什么原因?(SSH)
SSH框架, 执行查询操作的时候 速度慢的要死,调试的时候卡到Dao层getHibernateTemplate().find(hql) 这段代码。能卡3——5分钟 不动

要查询的表中就1012 条数据 (5列), 应该不至于这么慢啊? 谁能解释下,应该怎么办啊 ???

一下是代码片段:

action:
Java code
List basicList = super.getRightBiz().findAllBasicDataByNoteId(-1);//查询所有基础数据         request.getSession().setAttribute("basicList", basicList);



biz:
Java code
public List findAllBasicDataByNoteId(int noteId) {        String hql = "from BasicData where 1=1";        //noteId 值为大于等于0时,根据上级目录ID查询        if(noteId>=0){            hql+=" and noteId ="+noteId;        }        return super.getBaseDao().findObject(hql);    }


dao:
Java code
public List findObject(String hql) {        try {            return super.getHibernateTemplate().find(hql);        } catch (Exception e) {            e.printStackTrace();        }        return null;    }


------解决方案--------------------
探讨

引用:
将打印出来的的SQL语句直接放在数据库中执行下,看是否存在同样的问题。如果存在可以查看下查询计划,分下具体慢到哪了。

如果不存在,那么看下你的hibernate配置,比如关联关系什么的,是不是虽然你的意思是只执行一次查询,可实际hibernate框架因为你的设置需要其他额外的查询语句,导致查询慢。这个你可以看下输出SQL是否只有from BasicDa……
  相关解决方案