`
classicbride
  • 浏览: 14777 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring的HibernateTemplate理解

阅读更多
首先是HibernateTemplate的定义:

public class HibernateTemplate extends HibernateAccessor implements HibernateOperations { ... }


继承HibernateAccessor,我们再来看看HibernateAccessor,HibernateAccessor里最重要的就是设置SessionFactory

再看HibernateOperations接口,HibernateOperations里定义了我们常用的get(...)、find(...)、save(...)等操作,
其中最重要的就是Object execute(HibernateCallback action) throws DataAccessException;

现在我们又多了一个接口:HibernateCallback,HibernateCallback回调接口,它里面只有一个方法的定义,
Object doInHibernate(Session session) throws HibernateException, SQLException;
基本上相关联的比较重要的东东我们提到了。

接下来我们来看看HibernateTemplate的实现

通常我们写数据库操作时都如下:
--------------------------------------
/** 插入一个Info对象 */
public void insertInfo(Info info) {
  this.getHibernateTemplate().save(info);
}

/** 分页查询Info表 */
public List queryInfoList(int pageSize, int startRow) {
  final int pageSize1 = pageSize;
  final int startRow1 = startRow;
  return this.getHibernateTemplate().executeFind(new HibernateCallback(){
    public List doInHibernate(Session session) throws HibernateException, SQLException {
      Query query = session.createQuery(FIND_ALL_INFO);
      query.setFirstResult(startRow1);
      query.setMaxResults(pageSize1);
      return query.list();
    }
  });
}


这里面到底发生了什么事情呢?看看HibernateTemplate中的execute(...)的实现
(注:为了简单起见,先抛出事务什么的...)
---------------------------------------

public Object execute(HibernateCallback action) throws DataAccessException {

  先通过SessionFactory获取到Hibernate的Session对象
  
  执行HibernateCallback的对象的doInHibernate(...)的方法
  看看上面我们的“分页查询Info表”的方法
  
  关闭Session

  返回查询结果

}


HibernateTemplate中的get(...)、find(...)、save(...)等方法,只不过是spring事先为我们实现了
HibernateCallback接口而已

-----------------------------------------

HibernateTemplate就如同它的名字一样,运用了模板方法的模式,只是spring的运用方式实现是高明!佩服!
景仰!






分享到:
评论
1 楼 fjlyxx 2008-12-10  
就是一个回调接口。方便事物的统一管理。

相关推荐

    spring hibernatetemplate

    在Spring框架中,`HibernateTemplate`是一个非常重要的组件,它为开发者提供了与Hibernate持久化库交互的便捷方式。然而,正如描述中所指出的,直接使用`HibernateTemplate`进行事务管理并不总是最佳实践,尤其是在...

    Spring_Spring_Hibernate_HibernateTemplate

    《Spring与Hibernate整合:深入理解HibernateTemplate》 在Java企业级开发中,Spring框架和Hibernate持久层框架的结合使用是常见的技术选型。本篇将深入探讨Spring与Hibernate的集成,特别是Spring提供的...

    Spring_2000_Spring_Hibernate_HibernateTemplate

    标题中的"Spring_2000_Spring_Hibernate_HibernateTemplate"显然指的是一个关于Spring框架、Hibernate ORM框架以及其在2000年左右的版本或应用方式的专题。在这个主题下,我们将深入探讨Spring框架的核心特性,以及...

    一个模拟Spring将SessionFactory注入到HibernateTemplate的小例子

    在Spring框架中,整合Hibernate是常见的操作,Spring通过其强大的依赖注入(DI)特性,能够帮助我们更好地...通过理解和实践这个例子,你可以更好地掌握Spring的DI机制以及如何利用HibernateTemplate简化数据库操作。

    hibernateTemplate

    ### HibernateTemplate概述与核心功能详解 #### 一、引言 在Java开发领域,特别是企业级应用开发中,数据持久层的设计与实现至关重要。...希望本文能帮助读者更好地理解和掌握`HibernateTemplate`的使用技巧。

    spring 理解文件HibernateDaoSupport

    根据给定的信息,我们可以深入探讨Spring框架中与Hibernate集成的相关知识点,特别关注“HibernateDaoSupport”类及其在Spring环境中的应用。...这些内容有助于更好地理解和运用Spring框架与Hibernate的集成开发。

    Spring+hibernate整合源代码

    Spring 和 Hibernate 是两个非常重要的 Java 开发框架,它们在企业级应用开发中有着广泛的应用。...通过学习和实践这些代码,你可以更好地理解和掌握 Spring 和 Hibernate 整合的细节,提升你的 Java Web 开发能力。

    HibernateTemplate分组统计

    ### HibernateTemplate 分组统计知识点详解 #### 一、概述 在Java Web开发中,尤其是在使用...这不仅有助于更好地理解和掌握Spring与Hibernate的集成方式,同时也为解决实际项目中的复杂数据处理问题提供了有效途径。

    spring-note spring 读书笔记

    4. **Spring与Hibernate的集成**: Spring通过HibernateTemplate和HibernateDaoSupport简化了Hibernate的使用。`spring集成hibernate配置文件.txt`可能包含了整合步骤、事务配置以及如何处理SessionFactory和Session...

    spring-orm.jar

    《Spring ORM框架详解》 Spring ORM(Object-Relational Mapping)是Spring框架的重要组成部分,它为开发者提供了在Java应用中集成各种ORM框架的...理解并掌握Spring ORM,对于提升Java企业级应用开发的能力至关重要。

    Spring与Hibernate集成

    首先,我们需要理解Spring如何管理和控制Hibernate。在Spring中,我们通常使用`LocalSessionFactoryBean`来创建Hibernate的SessionFactory,并通过`HibernateTemplate`或`SessionFactory`接口进行数据访问操作。`...

    HibernateTemplate的方法使用

    **HibernateTemplate** 是 Spring 框架中用于简化 Hibernate 使用的一个工具类。它通过 AOP(面向切面编程)的思想,封装了大量的 CRUD(创建、读取、更新、删除)操作,使得开发者能够更加专注于业务逻辑的实现,而...

    spring源码分析(1-10)

    8. **Spring 驱动Hibernate的实现**:Spring整合Hibernate,提供了SessionFactory的管理、事务绑定以及DAO模板(HibernateTemplate)。这使得应用能够以统一的方式使用Hibernate,而无需直接操作SessionFactory或...

    spring2.0中文手册及使用指南 chm

    再者,Spring 2.0还包含了一个强大的数据访问层,支持JDBC、ORM框架(如Hibernate和JPA)以及模板类,如JdbcTemplate和HibernateTemplate。这些工具使得数据库操作更加便捷和安全,同时降低了与数据库交互的复杂性。...

    springmvc spring hibernate整合Demo

    这个"springmvc spring hibernate整合Demo"旨在帮助初学者理解如何将这三个框架协同工作,实现一个完整的CRUD(创建、读取、更新、删除)应用。 Spring MVC 是 Spring 框架的一部分,专门用于构建Web应用程序。它...

    Spring中英文资料

    此外,Spring 2.0还加强了对JDBC的支持,引入了JdbcTemplate和HibernateTemplate,简化了数据库操作,减少了代码中的SQL硬编码。 "spring20英文.pdf"很可能是Spring 2.0的官方英文文档,包含了详细的框架介绍、API...

    spring技术手册demo

    你将学习如何配置Hibernate SessionFactory,使用Spring的HibernateTemplate或SessionFactoryBean来管理Hibernate会话。此外,还会讲解如何在Spring中实现事务管理,以确保数据的一致性和完整性。 通过这五个章节的...

    spring4.2与Hibernate4.3配置

    当Spring和Hibernate结合使用时,通常会通过Spring的HibernateTemplate或HibernateDaoSupport类进行集成。HibernateTemplate是Spring提供的一个抽象层,它包装了Hibernate的Session,提供了事务安全的操作,简化了...

    spring的练习小sample

    2. **spring_1600_hibernate_hibernateTemplate**:Spring的HibernateTemplate是一个过时但常用的工具类,用于简化与Hibernate的数据访问操作。它封装了常见的数据库操作,如查询、更新、删除等,减轻了开发者的工作...

    HibernateTemplate类的使用

    为了更便捷地使用Hibernate,Spring框架提供了一系列工具类来简化其操作流程,其中`HibernateTemplate`就是其中一个非常重要的组件。本文将详细介绍`HibernateTemplate`的基本概念、工作原理以及如何正确使用它来...

Global site tag (gtag.js) - Google Analytics