Spring中使用getSession()与通过HibernateTemplate进行数据操作的差别
来源:互联网 发布:java语言绝对值 编辑:程序博客网 时间:2024/05/22 12:37
转载地址:http://zhainanchunchun.blog.163.com/blog/static/1295707162012865518624/
在 Spring+Hibernate的集成环境里,如果DAO直接使用HibernateDaoSupport的getSession()方法获取 session进行数据操作而没有显式地关闭该session,那么程序表现为:每个session会打开一个connection,并且 connection会一直保持(因为没有显式地close).如果程序使用了c3p0连接池,则因为c3p0连接池默认最大连接数是15,程序会表现为当打开第15个连接时,程序处于停滞状态,等待从连接池获取新的连接.
在同样条件下,使用HibernateTemplate进行数据操作,就没有连接数持续增长的情况,程序结束时连接数归零.这印证了spring文档上所说:HibernateTemplate会对session进行了管理,能够确保Session实例的正确打开和关闭.需要注意的是:在Spring环境里,即使我们使用Hibernate原生的API,比如这里所说的使用HibernateDaoSupport的getSession()方法得到Session进行数据操作(而不是使用Spring自己提供的API,比如HibernateTemplate),这些操作也依然会被纳入spring管理的事务中去.原因是通过getSession()方法得到Session是一个绑定到当前事务上的session.此处可参考:http://www.javaeye.com/topic/110801.这就是为什么Spring文档中提到的:You can implement DAOs based on the plain Hibernate 3 API, while still being able to participate in Spring-managed transactions.
如果程序使用了OpenSessionInViewFilter或者OpenSessionInViewInterceptor那将是另外一种情形了.
简单总结:HibernateDaoSupport的getSession()得到的Session会参与Spring管理的事务中,但是不能自动的关闭.HibernateTemplate除能参与到Spring管理的事务中,还能够确保Session实例的正确打开和关闭.
- Spring中使用getSession()与通过HibernateTemplate进行数据操作的差别
- Spring中使用getSession()与通过HibernateTemplate进行数据操作的差别
- Spring中使用getSession()与通过HibernateTemplate进行数据操作的差别
- Spring中使用getSession()与通过HibernateTemplate进行数据操作的差别
- Spring中使用HibernateTemplate来进行数据库操作
- spring 中HibernateTemplate的使用
- spring中HibernateTemplate类的使用
- Spring中HibernateTemplate类的使用
- spring框架中getSession与getHibernateTemplate的区别
- Spring入门Blog[十四、Spring中hibernateTemplate的使用]
- spring+hibernate--HibernateTemplate的使用
- 通过Spring使用JPA进行数据访问
- 对表格进行操作,WPS与Office的差别
- 用spring的hibernateTemplate操作mysql blob
- Spring在HibernateTemplate中使用查询缓存。
- HibernateTemplate 中方法的使用。
- 使用spring的hibernateTemplate的方法
- 使用spring的hibernateTemplate的方法
- 【菜鸟学习Linux】-第二章- Linux环境搭建-使用VMware9联网设置”
- Eclipse cdt安装与使用 (C/C++插件安装)
- HDU4697 Convex hull
- 查找首个非重复字符
- HDU 4704 Sum 费马小定理+快速幂
- Spring中使用getSession()与通过HibernateTemplate进行数据操作的差别
- Hibernate默认连接池使用问题
- HP DL360 G7通过iLO部署系统
- 如何提高网站访问速度
- ubuntu常用配置
- 如何在没有管理员权限的win7上设置环境变量
- 字符串转换器2013.08.23
- Win7下在IIS7中配置PHP的FastCGI支持_笔记
- PHP获取时间日期