问题是这样的,网站首页需要显示一些记录,感觉速度有些慢,
查询出6条数据,以list形式存到session里,jsp获取session里的list,将6条数据取出来
显示到页面上,下面是代码,是否有问题?还能怎么优化下。可以给点建议吗
jsp页面:List listGg=(ArrayList)request.getAttribute("listGg");action层:
     String hql2="from News order by operateDate desc ";
     List listGg=dao.find(hql2, 0, 6);
     request.setAttribute("listGg", listGg);
dao层:
public List find(String hql, int offset, int size)
throws HibernateException { Session session = (Session) HibernateBase.getCurrentSession();
Transaction transaction = null;
try {
transaction = HibernateBase.getTransaction(session);
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(size);
List results = query.list();
transaction.commit();
return results;
} catch (HibernateException he) {
if (transaction != null) {
transaction.rollback();
HibernateBase.closeTransaction();
}
HibernateBase.closeSession();
throw he;
} finally {
HibernateBase.closeTransaction();
HibernateBase.closeSession();
}
}

解决方案 »

  1.   

    你在执行SQL语句前后加上开始时间和结束时间,在Transaction加上时间,看看到底是取数据慢还是在客户端展现的问题。
      

  2.   

    只是查询把你的事务去掉吧,开启事务关闭事务都是消耗时间的
    如果你的首页就只有显示这6条数据的话,速度还是慢的话,那个基本上可以肯定是查询速度的问题,是不是你这个表中数据非常多,而索引又没建好,你可以看看operateDate有没有索引,建个索引看看
      

  3.   

    不明白 为什么首页的东西要放到session里面
      

  4.   

    首页的内容条目获取可以直接用对象看来获取,这个对象的某个方法返回一个list,在jsp页面中接收这个list再遍历出来就行了!
      

  5.   

         试着放在对象里面试一下  兄弟, 建议数据不应该放在session里面 
      

  6.   

    有个问题,为什么只取六行,就会有效率问题?要不就是你的表超级大,且没有用到索引。
    按理说只取六行都很慢的话,那没办法再往下弄了。如果是往session里放东西,也不致于慢。不知道楼主这个网站是不是哪出问题了?