`
java虫
  • 浏览: 536491 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

结合HibernateTemplate学习模板方法模式

阅读更多
Template Method模式介绍:

    Template Method模板方法模式是一种行为型模式,具体点说是行为类型模式。主要解决在软件构建过程中,对于某一项任务,常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因而无法和任务的整体结构同时实现。

   GoF《设计模式》中说道:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤


HibernateTemplate类的execute方法即为模板方法,代码如下    
public Object execute(HibernateCallback action, boolean exposeNativeSession) throws DataAccessException {
  Assert.notNull(action, "Callback object must not be null"); 

Session session = getSession();
.......................

Object result = action.doInHibernate(sessionToExpose);

........................

 }


Spring的HibernateTemplate帮我们完成了如下工作:

获取会话,
开始事务,
处理异常,
显式提交变化到db,
关闭会话。

execute方法中只有对数据库的操作操作doInHibernate()不同,其他比如对异常的检查,session等资源的获得和释放都相同,

即execute方法的总流程架子不变,而只有数据库的操作即doInHibernate方法是变化的,

所以将他的实现,以某种方式(在这里是内联类)延迟到其他地方实现,这应该就是Template Method模式


网上摘录:

Template Method要点

1、  Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。它用最简洁的机制(虚函数的多态性)为了很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。

2、  除了可以灵活应对子步骤的变化外,“Don't call me.Let me Call you”的反向控制结构是Template Method的典型应用。“Don’t call me.Let me Call you”是指一个父类调用一个子类的操作,而不是相反。

3、  在具体实现方面,被Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法、纯虚方法),但一般推荐将它们设置为protected方法。可以没有具体实现的方法应该称为hook operation(钩子操作),提供了缺省的行为,子类可以在必要时进行扩展。

4、  尽量减少primitive operation,因为需要重新定义的操作越多,客户程序就越长


Javaeye会员的理解,

Buaawhl:
IoC, Functor, Visitor 都是 callback。
就是一个 Template Methond 里面的flow不变,某一个步骤的具体操作变化,这个变化部分需要从外部(参数,或者属性,或者 override parent method)注入。
类似于从前的 C 回调函数指针。
MainFlow ( callback ){ 
step1; 
 ........
callback( someThing ); 
.... 
stepN; 
} 

分享到:
评论

相关推荐

    Hibernate泛型DAO(结合spring模板支持)

    本篇文章将探讨如何使用Hibernate实现泛型DAO,并结合Spring模板来增强其功能。 泛型DAO是一种设计模式,它通过定义一个通用的DAO接口或抽象类,可以适用于不同的实体类,减少了重复的代码。这种模式的核心在于利用...

    java开发常用设计模式

    本文将深入探讨Java开发者必须掌握的几种关键设计模式,并结合部分Spring框架的学习方法,阐述如何在实际开发中应用这些模式。 #### 设计模式概述 设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。...

    java程序员简历模板

    - 用 Ajax 实现异步刷新功能,解决了全屏刷新资源消耗大及出空白页面等待的问题,也极大地减轻了网络传输的压力,并结合 JavaScript 技术丰富页面动态效果 - 完善了该项目的相关文档资料 * 人事管理系统 + 软件...

    spring整合Hibernate学习笔记.docx

    Spring 整合 Hibernate 是一种常见的企业级应用开发模式,它将 Spring 框架的管理优势与 Hibernate 的持久层功能结合起来,提供了更高效、更稳定的应用解决方案。在本学习笔记中,我们将深入探讨如何实现这一整合,...

    SpringDao模式实例

    在实际应用中,Spring DAO模式的实现通常会结合使用上述组件,通过配置文件(XML或Java配置)来定制数据访问行为,同时利用IoC(控制反转)和AOP(面向切面编程)特性,使得数据访问层能够灵活地与其他组件协作。...

    第24次课-1 Spring与Hibernate的整合

    HibernateTemplate可将Hibernate的持久层访问模板化。创建HibernateTemplate后,注入一个SessionFactory的引用,就可以执行相关操作了。 HibernateTemplate提供了3个构造函数 HibernateTemplate(SessionFactory sf) ...

    spring和数据库层的结合

    2. **模板模式**:Spring提供了`HibernateTemplate`类,它类似于`JdbcTemplate`,可以用来简化Hibernate的操作。通过这个模板类,开发者可以更简洁地实现增删查改等基本操作。 3. **自动注入与便利获取**:Spring...

    HibernateS整合pring

    当Spring整合Hibernate时,它为Hibernate提供了模板类`HibernateTemplate`,这个模板类简化了数据库操作,同时保持了事务的一致性。`HibernateTemplate`提供了诸如`save()`, `update()`, `delete()`, `get()`, `load...

    spring几种Dao支持配置

    它提供了一组与`HibernateTemplate`类似的模板方法,用于执行iBATIS的SQL映射文件中的SQL语句。 4. **JPA(Java Persistence API)DAO支持:** Spring支持JPA,包括传统的JPA API和Spring Data JPA。使用`...

    spring2.5 hibernate api

    此外,Spring的JdbcTemplate和HibernateTemplate还可以用于实现数据库操作的模板方法模式,提高了代码的可读性和可重用性。 总的来说,Spring 2.5 和 Hibernate 的结合为Java开发人员提供了一套强大的工具,用于...

    mysql-jdbc-Spring源代码分析

    `JdbcTemplate`是Spring框架提供的一个用于简化JDBC编程的工具类,它封装了许多常用的数据库操作,如查询、更新等,并且通过模板模式设计,提供了灵活的扩展机制。这使得开发者能够更专注于业务逻辑而非繁琐的JDBC...

    spring事务管理5种方法

    这是基于模板方法的设计模式,简化了数据访问层的代码。 每种事务管理方法都有其适用场景,选择哪种方式取决于项目需求、团队习惯以及对事务控制的精细程度。理解并灵活运用这五种事务管理方法,能有效提升Spring...

    最新版本ssh搭好的框架模板

    Struts2是MVC模式的一种实现,它结合了WebWork的优点和Struts1的社区资源。Struts2提供了一种强大的拦截器(Interceptor)机制,用于在Action执行前后添加自定义逻辑。在Struts2中,Action类定义了业务逻辑,结果...

    HibernateDaoSupport 与@Autowired

    2. `getHibernateTemplate()`: 返回一个`HibernateTemplate`实例,该模板类封装了许多常用的Hibernate操作,如保存、更新、删除和查询等,使得操作数据库变得更加简洁。 3. `getSession()`: 提供对当前事务上下文中...

    SpringMVC+Freemarker+Hibernate整合范例

    2. **Freemarker**:Freemarker是一个模板语言,其主要任务是将数据模型与HTML或其他格式的模板结合,生成最终的输出。开发者在模板中定义占位符,Freemarker会根据提供的数据模型替换这些占位符。这种方式使得视...

    spring1.2.6源码

    源码中,`JdbcTemplate`和`HibernateTemplate`是两个典型的数据库访问模板类,它们封装了SQL执行和结果集处理,简化了数据库操作。 5. **Web层(Web)**:Spring MVC是Spring框架的Web部分,提供了一种模型-视图-...

    spring 对dao 的操作

    2. **实现DAO接口**:接着,创建DAO接口的实现类,使用Spring提供的模板类或ORM框架来实现这些方法。 3. **配置Spring**:在Spring的配置文件中,定义DAO Bean,指定其实现类,并注入必要的依赖,如数据源、...

    spring部分

    1. springdaoHibernate:这部分内容可能涉及到Spring的DAO支持和Hibernate的整合,讲解了如何使用Spring的JDBC模板和HibernateTemplate来简化数据库操作,以及如何配置Spring来管理Hibernate的SessionFactory。...

    Spring整合HIbernate

    4. **创建DAO接口**:定义数据访问接口,不直接操作Session,而是使用Spring提供的模板方法。 5. **实现DAO**:继承`HibernateDaoSupport`,注入`HibernateTemplate`,实现DAO接口的方法。 6. **事务管理**:在...

    java软件工程师简历(合集).docx

    设计模式是解决常见编程问题的模板,能够提高代码的可重用性和可维护性。 4. **数据库技术**: 陶**熟练使用Oracle和MySQL数据库,这涵盖了SQL查询、事务处理和存储过程。 5. **Web技术**: 他熟练使用JSP、HTML、...

Global site tag (gtag.js) - Google Analytics