您的位置:首页 > 编程语言 > Java开发

在spring声明式事务下的Hibernate的session管理。

2010-06-02 00:21 260 查看
SSH项目中的数据访问类一般都是继承至HibernateDaoSupport,然后通过使用HibernateTemplate该对象来进行数据的增删改查。

这个过程中我们没有直接接触到session,所以没有关闭session的代码。

写这篇文章的目的为的是说明在spring声明式事务下的Hibernate的session获取到后进行操作,操作完需不需要关闭。

例如如下的代码,就是获取了session进行操作

Session session=super.getSession();
Query query=session.createQuery(hql);
Long result= (Long) query.uniqueResult();
return result;

这段代码我没有写session.close()方法关闭session,因为spring会管理我们的session。

如果我在这段代码后加上session.close的话,那么如果我这段代码在嵌套事务中的执行的话,那么就会发生session已关闭异常。

所以得出的结论是在spring事务下的session是不需要我们来关闭的。

如果说我们没有添加spring的声明式事务的话,那么用完session后需不需要关闭呢?

答案是需要的,因为这个时候是我们自己来管理session,不关闭的话session就一直占用着数据库连接。

第一次写技术性文章,希望大家看到这篇文件觉得我说的有什么地方不对的话请多多指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: