hibernate查询query.list()返回结果速度很慢,请指点

public List acquierByType(int typeid)
{
Session s = null;
try
{
String SQL = "from JacArea as area where area.AreaTypeTableID =:typeid
and area.ValidFlag=1";
s = HibernateUtils.currentSession();
Query q = s.createQuery(SQL);
q.setInteger("typeid", typeid);
return q.list();
} catch (HibernateException e)
{
e.printStackTrace();
} finally
{
}
return null;
}

其中AreaTypeTableID是聚集索引,ValidFlag是索引,把查询语句直接在SQL server查询,速度很快没有问题,但当调用该函数的时候速度很慢,时间竟然达到3、4s,经过增加调试代码,发现就是return q.list()这句花费绝大部分时间,另外查询结果返回的数据不是很多,大概300条左右。因为我把返回结果用网页中的下拉框select显示,所以没有分页,但,我想300条结果也不应该这么慢吧。

[color=red] 请问应该怎么处理,大家遇到这样的问题了吗?[/color]

看网络上有人说用scroll()函数可以提高效率,可是关于ScrollableResults的用法在网上没有找到说明?后来看api但也不是很详细。还是不知道怎么处理。
我试着编了一下把return q.list()改写为以下代码,不过,我感觉我这个写法应该是有问题的,
下面代码中area是数据库返回的结果集的一个,ScrollalbeResults.get()得到area的各列。
ScrollableResults t=q.scroll();
while(t.next())
{
model.JacArea area = new model.JacArea();
area.setId(t.getInteger(0)); // [b]可是在运行的时候,提示参数空[/b]
area.setAreaName(t.getString(1));
area.setAreaTypeTableID((JacAreatype)t.get(2));
area.setAreaNameID(t.getString(3));
area.setValidFlag(t.getInteger(4));
l.add(area); //已经在函数开始声明为List类型
}
return l;

另外,我的应用是web,通过jsp网页显示该内容
请问上述问题应该怎么处理?十分感谢!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值