`
squall140
  • 浏览: 146244 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

HibernateDaoSupport的getSession()与HibernateTemplate的差别

阅读更多

在 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和HibernateDaoSupport

    HibernateTemplate 是 Spring 提供的一个模板类,它封装了对 Hibernate Session 的操作,避免了直接与 Session 进行交互时出现的事务管理、异常处理等问题。HibernateTemplate 提供了一组丰富的静态方法,涵盖了大...

    HibernateDaoSupport 与@Autowired

    3. `getSession()`: 提供对当前事务上下文中的Session的访问,这对于执行HQL或SQL查询非常有用。 接下来,我们谈谈`@Autowired`。这是Spring框架的一个关键注解,用于实现依赖注入(Dependency Injection, DI)。DI...

    HibernateDaoSupport的使用

    《Spring框架下HibernateDaoSupport的深度解析与应用》 在Java企业级开发中,Spring框架以其优秀的IoC(控制反转)和AOP(面向切面编程)特性,成为了事实上的标准。而Hibernate作为主流的对象关系映射(ORM)工具...

    hibernateDaoSupport类的运用实例

    通过上述步骤,我们了解了如何使用`hibernateDaoSupport`类来简化Hibernate与Spring的集成。这种方法不仅提高了代码的可读性和可维护性,还大大减少了开发过程中的错误可能。在实际开发过程中,开发者可以根据项目...

    spring 理解文件HibernateDaoSupport

    以上就是关于Spring与Hibernate集成的关键知识点,包括基本配置、HibernateDaoSupport与UserDaoHibernateImpl的区别,以及Spring+Struts+Hibernate集成的具体实现细节。这些内容有助于更好地理解和运用Spring框架与...

    hibernateDaoSurpport和hibernateTemplate

    ### HibernateDaoSupport与HibernateTemplate详解 #### 一、引言 在Java开发中,Spring框架与Hibernate框架的结合使用非常普遍。Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能,极大地简化了Java...

    HibernateTemplate及generator用法.doc

    为了简化Hibernate与Spring的整合,Spring提供了`HibernateTemplate`类,它是一个封装了Hibernate Session的工具类,使得在处理数据库操作时更加方便。`HibernateTemplate`在事务管理、异常转换等方面提供了很多便利...

    HibernateTemplate及generator用法.docx

    为了简化Hibernate与Spring的集成,Spring提供了HibernateTemplate类,它是Spring对Hibernate的一种封装,使得在DAO层操作数据库变得更加简便和安全。 首先,我们来看如何在DAO中使用HibernateTemplate。通常,DAO...

    HibernateDaoSupport二次封装组件,快速统计和查询,修改

    通过`getSession().createQuery()`或`getSession().createCriteria()`创建查询,设置参数,添加分页限制,最后执行`list()`获取结果集。 3. **修改操作**:对于更新,我们可以创建一个`updateByQuery`方法,接收HQL...

    springboot2.0多数据源集成hibernate配置hibernateDaoSupport示例

    通过这种方式,我们可以在不同的事务管理器下,利用`HibernateDaoSupport`与不同数据源进行交互。在`springBootDemo01`项目中,你将找到具体实现这些功能的代码结构和配置。 总结,这个示例展示了如何在Spring Boot...

    HibernateDaoSupport 类的jar

    HibernateDaoSupport 类的jar HibernateDao 的jar

    SSH整合(其中dao用extends HibernateDaoSupport方式)总结【图解】

    SSH整合(其中dao用extends HibernateDaoSupport方式)总结【图解】

    HibernateDaoSupport 源码

    Spring hibernate3. HibernateDaoSupport 源码

    HibernateDaoSupport与JdbcDaoSupport

    ### HibernateDaoSupport与JdbcDaoSupport详解 #### 一、概述 在软件开发过程中,特别是企业级应用开发中,数据库操作是一项重要的任务。为了简化这一过程并提高代码的可维护性和扩展性,Spring框架提供了多种支持...

    HibernateDaoSupport分页.

    Spring框架中的`HibernateDaoSupport`类提供了与Hibernate集成的基础支持,简化了开发过程。本文将详细介绍如何利用`HibernateDaoSupport`来实现分页功能。 #### 二、代码分析 ##### 1. MyHibernateDaoSupport 类...

    Spring+Hibernate实现增删改查的两种方法

    本文将深入探讨如何利用Spring与Hibernate整合,通过两种不同的方式来实现这些基本操作:HibernateTemplate和HibernateDaoSupport。 **一、HibernateTemplate** HibernateTemplate是Spring提供的一个方便的类,它...

    SSH整合过程(图)

    还要配置Spring与Hibernate的整合,使用HibernateDaoSupport类或HibernateTemplate。 **第五步:配置Hibernate** 在hibernate.cfg.xml中配置Hibernate的数据库连接信息,如driver、url、username、password等。然后...

    HibernateDaoSupport.docx

    【HibernateDaoSupport】是Spring框架中的一个抽象类,主要用于简化Hibernate的数据访问操作,它为DAO层提供了方便的事务管理和Session管理。这个类是Spring与Hibernate集成的重要组件,尤其对于初学者来说,理解其...

    struts2.2.3+spring3.1.0+hibernate4.0整合

    在Struts2中,可以通过Spring提供的HibernateDaoSupport类或者HibernateTemplate来进行数据库操作。 接下来,我们详细讲解整合步骤: 1. **配置Struts2-Spring插件**: - 在`struts.xml`中引入Spring插件: ```...

    Spring_Hibernate集成

    * 继承HibernateDaoSupport类,使用HibernateTemplate来持久化,HibernateTemplate是 Hibernate Session的轻量级封装 * 默认情况下运行期异常才会回滚(包括继承了RuntimeException子类),普通异常是不会滚的 ...

Global site tag (gtag.js) - Google Analytics