1、问题情景
在Dao里调用getCurrentSession()
代码如下
@Override
public WebSite findWebSite() {
Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession();
Query query = session.createQuery("from WebSite");
WebSite webSite = (WebSite)query.uniqueResult();
return webSite;
}
此dao不在spring事务上下文中
出现一下异常
No hibernate bound to the thread
2、处理过程
- 首先利用this.getSession()获取的话,不会出现此异常。
- 很明显是getSession()与getCurrentSession()有区别
getSession()需要手动关闭session。而getCurrentSession()绑定了线程,依靠**事务**提交或回滚进行自动关闭session
getCurrentSession()是依靠事务提交或回滚进行自动关闭session的。
这句话解释了问题所在。自然就解决了出现No hibernate bound to the thread异常