Search for
Login | Username Password Forgot? | Email: | Create Account
Non English | Popularity: 0 | Entries: 63 | Updated: 2h 37m ago | | Add to My Feeds
Hibernate Session未关闭
November 3rd, 2010

先直接看起初写的代码:

public List findAll(Integer start, Integer limit) {
	log.debug("finding all SipNews instances");
	try {
		String queryString = "from SipNews";
		Query query = this.getSession().createQuery(queryString);
		query.setFirstResult(start);
		query.setMaxResults(limit);
		return query.list();
	} catch (RuntimeException re) {
		log.error("find all failed", re);
		throw re;
	}
}

打眼一看好像是没啥问题,但是这个方法被连续调用3次以上后,程序就卡住了,成假死态。
从结果来看,应该是数据库连接用完没有被释放的问题。我还在想:不是Hibernate自动管理连接的吗?再仔细一看,发现:getSession().createQuery(queryString),⊙﹏⊙b汗,赶紧把它session关闭。

public List findAll(Integer start, Integer limit) {
	log.debug("finding all SipNews instances");
	Session s = this.getSession();
	try {
		String queryString = "from SipNews";
		Query query = s.createQuery(queryString);
		query.setFirstResult(start);
		query.setMaxResults(limit);
		return query.list();
	} catch (RuntimeException re) {
		log.error("find all failed", re);
		throw re;
	} finally{
		s.close();
	}
}

或许你会对下面这些文章感兴趣:



More from Neeke's Blog

十日杂谈 10 Dec 3
SAS数据集更新 10 Nov 3
SAS循环结构 10 Sep 9
拒绝鼠标手 10 Sep 1
Hello SAS 10 Sep 1
SAS语言构成 10 Sep 1

^ Back To Top