在
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实例的正确打开和关闭.
分享到:
相关推荐
HibernateTemplate 是 Spring 提供的一个模板类,它封装了对 Hibernate Session 的操作,避免了直接与 Session 进行交互时出现的事务管理、异常处理等问题。HibernateTemplate 提供了一组丰富的静态方法,涵盖了大...
3. `getSession()`: 提供对当前事务上下文中的Session的访问,这对于执行HQL或SQL查询非常有用。 接下来,我们谈谈`@Autowired`。这是Spring框架的一个关键注解,用于实现依赖注入(Dependency Injection, DI)。DI...
《Spring框架下HibernateDaoSupport的深度解析与应用》 在Java企业级开发中,Spring框架以其优秀的IoC(控制反转)和AOP(面向切面编程)特性,成为了事实上的标准。而Hibernate作为主流的对象关系映射(ORM)工具...
通过上述步骤,我们了解了如何使用`hibernateDaoSupport`类来简化Hibernate与Spring的集成。这种方法不仅提高了代码的可读性和可维护性,还大大减少了开发过程中的错误可能。在实际开发过程中,开发者可以根据项目...
以上就是关于Spring与Hibernate集成的关键知识点,包括基本配置、HibernateDaoSupport与UserDaoHibernateImpl的区别,以及Spring+Struts+Hibernate集成的具体实现细节。这些内容有助于更好地理解和运用Spring框架与...
### HibernateDaoSupport与HibernateTemplate详解 #### 一、引言 在Java开发中,Spring框架与Hibernate框架的结合使用非常普遍。Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能,极大地简化了Java...
为了简化Hibernate与Spring的整合,Spring提供了`HibernateTemplate`类,它是一个封装了Hibernate Session的工具类,使得在处理数据库操作时更加方便。`HibernateTemplate`在事务管理、异常转换等方面提供了很多便利...
为了简化Hibernate与Spring的集成,Spring提供了HibernateTemplate类,它是Spring对Hibernate的一种封装,使得在DAO层操作数据库变得更加简便和安全。 首先,我们来看如何在DAO中使用HibernateTemplate。通常,DAO...
通过`getSession().createQuery()`或`getSession().createCriteria()`创建查询,设置参数,添加分页限制,最后执行`list()`获取结果集。 3. **修改操作**:对于更新,我们可以创建一个`updateByQuery`方法,接收HQL...
通过这种方式,我们可以在不同的事务管理器下,利用`HibernateDaoSupport`与不同数据源进行交互。在`springBootDemo01`项目中,你将找到具体实现这些功能的代码结构和配置。 总结,这个示例展示了如何在Spring Boot...
HibernateDaoSupport 类的jar HibernateDao 的jar
SSH整合(其中dao用extends HibernateDaoSupport方式)总结【图解】
Spring hibernate3. HibernateDaoSupport 源码
### HibernateDaoSupport与JdbcDaoSupport详解 #### 一、概述 在软件开发过程中,特别是企业级应用开发中,数据库操作是一项重要的任务。为了简化这一过程并提高代码的可维护性和扩展性,Spring框架提供了多种支持...
Spring框架中的`HibernateDaoSupport`类提供了与Hibernate集成的基础支持,简化了开发过程。本文将详细介绍如何利用`HibernateDaoSupport`来实现分页功能。 #### 二、代码分析 ##### 1. MyHibernateDaoSupport 类...
本文将深入探讨如何利用Spring与Hibernate整合,通过两种不同的方式来实现这些基本操作:HibernateTemplate和HibernateDaoSupport。 **一、HibernateTemplate** HibernateTemplate是Spring提供的一个方便的类,它...
还要配置Spring与Hibernate的整合,使用HibernateDaoSupport类或HibernateTemplate。 **第五步:配置Hibernate** 在hibernate.cfg.xml中配置Hibernate的数据库连接信息,如driver、url、username、password等。然后...
【HibernateDaoSupport】是Spring框架中的一个抽象类,主要用于简化Hibernate的数据访问操作,它为DAO层提供了方便的事务管理和Session管理。这个类是Spring与Hibernate集成的重要组件,尤其对于初学者来说,理解其...
在Struts2中,可以通过Spring提供的HibernateDaoSupport类或者HibernateTemplate来进行数据库操作。 接下来,我们详细讲解整合步骤: 1. **配置Struts2-Spring插件**: - 在`struts.xml`中引入Spring插件: ```...
* 继承HibernateDaoSupport类,使用HibernateTemplate来持久化,HibernateTemplate是 Hibernate Session的轻量级封装 * 默认情况下运行期异常才会回滚(包括继承了RuntimeException子类),普通异常是不会滚的 ...