Spring中使用getSession()与通过HibernateTemplate进行数据操作的差别
来源:互联网 发布:淘宝小y代购levis真吗 编辑:程序博客网 时间:2024/05/18 09:12
在 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的方法
- 考核的终极目标:人才分类
- const 使用小结
- 怎么实现Windows 2003的自动登录不用按确定进入桌面
- UVa OJ 10909-Soya Milk
- SQL Server--数据库中如何使用表值参数
- Spring中使用getSession()与通过HibernateTemplate进行数据操作的差别
- 服装ERP选型需遵循六大原则
- erlang的超轻量级进程是如何实现的
- ArcGis server api for flex widget的 理解--自定义组件。
- 做算法题的几个思路
- 伸展树查找第K个最大/最小元C语言
- sed实战之——删除空行(包括由空格组成的空行)
- Struts2 发邮件找回密码
- 在windows azure上开发Tomcat Java应用