Hibernate 自定义查询卡死情况解决
我们使用hibernate查询的时候经常会遇到多查询几次卡死的问题,其实这里主要是session不够用了,当每查询一次时就会创建一个session 如下面的一个简单分页查询
public List findPageService(int pageNow,int pageSize) { String hql="。。。。。。。。。。。。。"; Session session=getHibernateTemplate().getSessionFactory().openSession(); Query q= session.createQuery(hql); int first=(pageNow-1)*pageSize; q.setFirstResult(first); q.setMaxResults(pageSize); List list= q.list(); return list; }
就会遇见这样的问题
解决办法很简单
我们都知道hibernateDAO 是继承 HibernateDaoSupport
我们就可以调用父类下面的releaseSession(Session)方法来舍弃这个session
这里session.close()和session.clear()方法是没有作用的 切记
所以上面的方法只要加一行代码就可以了
public List findPageService(int pageNow,int pageSize) { String hql="。。。。。。。。。。。。。"; Session session=getHibernateTemplate().getSessionFactory().openSession(); Query q= session.createQuery(hql); int first=(pageNow-1)*pageSize; q.setFirstResult(first); q.setMaxResults(pageSize); List list= q.list(); super.releaseSession(session); return list; }
注意:如果有多对一关系的话这里我们需要设置<many-to-one>里的lazy属性为false
还有一种方法是用sping管理session方法
getHibernateTemplate().executeFind()包住查询代码就OK了,spring会自动插入关闭当前session的代码
相关推荐
solarspot 2020-07-28
houmenghu 2020-11-17
我心似明月 2020-11-09
oraclemch 2020-11-06
ltd00 2020-09-12
康慧欣 2020-09-10
waveclouds 2020-09-04
蓝色深海 2020-09-15
jincheng 2020-09-01
思君夜未眠 2020-08-25
取个好名字真难 2020-08-06
歆萌 2020-08-03
阳光之吻 2020-08-03
婷婷小屋 2020-07-28
MLXY 2020-07-26
dxbjfu0 2020-07-26
songbinxu 2020-07-19
83520298 2020-07-06