在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就一直占用着数据库连接。
第一次写技术性文章,希望大家看到这篇文件觉得我说的有什么地方不对的话请多多指教。
这个过程中我们没有直接接触到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就一直占用着数据库连接。
第一次写技术性文章,希望大家看到这篇文件觉得我说的有什么地方不对的话请多多指教。
相关文章推荐
- Hibernate_在应用程序中使用的Session的管理方案
- Hibernate中的Session管理
- Hibernate管理Session
- Hibernate中Session的管理
- Hibernate入门25 - Session 管理
- hibernate 管理session对象的4种方式
- Hibernate -- 配置c3p0连接池, 事务隔离级别, 管理session
- hibernate 管理Session:Session 对象的生命周期与本地线程绑定
- Hibernate 管理 Session
- hibernate 管理 Session(单独使用session,非spring)
- 1、Struts2和Hibernate的简单整合(带Session的管理方式)
- 利于ThreadLocal模式管理hibernate的Session
- Hibernate事务管理-HibernateTransactionManager-对hibernate session的管理
- spring整合hibernate关于session的管理
- Hibernate(八)---管理Session
- Hibernate -- 配置c3p0连接池, 事务隔离级别, 管理session
- 【Hibernate】Hibernate系列8之管理session
- 封装hibernate,自己管理session
- 框架 day34 Hibernate,h对事务并发处理,管理session,二级缓存,h练习案例
- hibernate的二级缓存操作及session的管理方法及数据的批量处理