SSH中hibernate查询优化

冲杀 2009-09-21 12:56:02
首次打开页面的时候查询还行,但是再次打开页面的时候,速度慢的要死,页面都显示不出来
每次查询的数据量都不大,就返回不到50条数据而已
求优化
求优化
...全文
912 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
a1003 2010-01-27
  • 打赏
  • 举报
回复
21楼说的很好,hibernatedaosupper这个类功能很强大,里面已经对session进行优化,用空可以去看看,你可以使用gethibernateTemplet()方法操作数据库
youjianbo_han_87 2009-09-26
  • 打赏
  • 举报
回复
用了spring,最好不要再手动去控制Session了。
qq707472 2009-09-26
  • 打赏
  • 举报
回复
第一考虑的应该就是session是否关闭
Adam43046721 2009-09-26
  • 打赏
  • 举报
回复
数据库没有关闭,当然了,你使用hibernate,那就是session没有正常关闭。
长公子冰 2009-09-22
  • 打赏
  • 举报
回复
原来是Session关闭哦! 那没有抛出异常吗?楼主?你没用OpenSessionInView?
archko 2009-09-22
  • 打赏
  • 举报
回复
答对了100分
wyj1983 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 tomaery 的回复:]
回复结束才看到你已经解决了,其实没有必要那样做。如果你用到了hibernate.你是不是用到了spring了?
用spring去管理事务就可以了,这里就不用写那样的语句了。直接继承HibernateDaoSupport,用getSession()这个就可以了。 super.getSession().createQuery(HQL); spring会自己帮你关闭session的 然后需要注意的是。配置到service层,不要切入到dao层。很多人放在dao层了。这点需要注意
[/Quote]
up
javadaydayup 2009-09-22
  • 打赏
  • 举报
回复
mark
tomaery 2009-09-22
  • 打赏
  • 举报
回复
回复结束才看到你已经解决了,其实没有必要那样做。如果你用到了hibernate.你是不是用到了spring了?
用spring去管理事务就可以了,这里就不用写那样的语句了。直接继承HibernateDaoSupport,用getSession()这个就可以了。 super.getSession().createQuery(HQL); spring会自己帮你关闭session的 然后需要注意的是。配置到service层,不要切入到dao层。很多人放在dao层了。这点需要注意
冲杀 2009-09-22
  • 打赏
  • 举报
回复
http://blog.csdn.net/chongsha/archive/2009/09/22/4578640.aspx
详细解决方案
tomaery 2009-09-22
  • 打赏
  • 举报
回复
好像是事务的问题吧。如果你事务应用不恰当的话。session连接就关不掉。然后每一次请求就等于需要重新打开一个session 而且你这样的查询语句我经常写,也不会出像你说的那种问题。我想只能是session没能及时关闭的问题
冲杀 2009-09-22
  • 打赏
  • 举报
回复
问题已解决,是getSession()方式开满了数据库连接造成的
使用Session session = super.getSession();
String hql = "from Item as i";
List l = session.createQuery(hql).list();
releaseSession(session);

这种方式关闭连接即可
冲杀 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 tomaery 的回复:]
回复结束才看到你已经解决了,其实没有必要那样做。如果你用到了hibernate.你是不是用到了spring了?
用spring去管理事务就可以了,这里就不用写那样的语句了。直接继承HibernateDaoSupport,用getSession()这个就可以了。 super.getSession().createQuery(HQL); spring会自己帮你关闭session的 然后需要注意的是。配置到service层,不要切入到dao层。很多人放在dao层了。这点需要注意
[/Quote]
我直接使用的getSession(),和spuer.getSession()没区别,所以spring并不会去主动关闭,而最开始没找到有效关闭连接的方式,造成了我的数据库连接使用耗尽的情况,而使用getHibernateTemplate() 却又有很多东西没办法用!呵呵
老紫竹 2009-09-22
  • 打赏
  • 举报
回复
果然是数据库连接没有关闭引起的。
而数据库没关,是因为你的session没关(没有提交)。

OVER
老紫竹 2009-09-21
  • 打赏
  • 举报
回复
2次查询有何差别?这问题在你目前提供的数据看,基本属于无解。
冲杀 2009-09-21
  • 打赏
  • 举报
回复
很郁闷 CSDN上的帖子都不能被编辑 日怪的很
zwj_yhx 2009-09-21
  • 打赏
  • 举报
回复
顶一下!!
冲杀 2009-09-21
  • 打赏
  • 举报
回复
现在不是慢不慢的问题了 是在同一个页面连续开了几次后 在上面那个方法获取LIST的时候 就出不来了 一直卡在那
woming66 2009-09-21
  • 打赏
  • 举报
回复
第二次查询居然比第一次查询慢?不可能!

你这个问题不太像是优化能解决掉的,及时你优化了加入二级cache,但是这样的问题还会出现,简单的说感觉还是程序问题!
冲杀 2009-09-21
  • 打赏
  • 举报
回复
按照楼上说的改写了 点击同一个页面开二次以上还是会卡在query.list()这里出不来
加载更多回复(11)
1,项目功能:(1)注册用户管理模块管理员登录后可以实现对用户信息的编辑、删除、查询、添加等操作。(2)公交公告信息管理模块普通用户登录系统后,进入公告管理模块,用户可以提出自己的一些看法意见和对本公交系统的建议,能查看以前的留言。除此之外系统还提供事物认领模块。(3)公交动态信息管理模块管理员登录系统后进入相应管理员主界面,在管理员主界面,可对公交动态信息进行添加和删除,实时更新公交变动信息。(4)公交线路管理模块管理员登录系统后进入相应管理主界面,在管理员主界面,可对公交线路信息进行添加和删除。(5)公交统计分析管理员登录系统后进入相应管理主界面,对公交信息进行统计分析,并以图表可视化展现。(6)线路地图查看管理员可以查看公交线路地图,并以百度地图形式展现。(7)用户模块用户登录成功后,可以对当前用户信息进行查看、用户信息修改、找回密码设置等操作(8)失物招领模块用户登录成功后可以查看失物招领信息,管理员可以发布失物招领信息。      适合做毕业设计参考项目。2,涉及技术:SSH框架,Tomcat3,开发环境:IDEA,MySQL数据库4,讲解方式:从环境安装,项目搭建,以及项目介绍等进行讲解5,包含资料:项目源码(含数据库文件),环境安装包,项目文档。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧