读书人

getHibernateTemplate().find(hql) 超

发布时间: 2012-03-19 22:03:04 作者: rapoo

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……

读书人网 >J2EE开发

热点推荐