`
cectsky
  • 浏览: 45882 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

【Spring】学习spring整合hibernate的callback+template机制

阅读更多

 

最近看spring的时候,看到JdbcTemplate的时候,发现其实现方法极其ugly。

 

概念:(从网上抄的,哥不懂啊

1、callback机制。

摘自http://www.iteye.com/topic/727249 感觉有点通俗。

 

你有一个复杂的问题解决不了,打电话给你的同学,你的同学说可以解决这个问题,但是需要一些时间,那么你不可能一直拿着电话在那里等,你会把你的电话号码告诉他,让他解决之后打电话通知你。即回调就是体现在你的同学又反过来拨打你的号码。

 

解释:将电话号码(自己的引用)给朋友,朋友再打电话(调用自己引用的方法)回拨给自己

 

Ajax中的异步+回调机制:

function test{   
   if(window.ActiveXObject){   
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");   
   }else if(window.XMLHttpRequest){   
      xmlHttp = new XMLHttpRequest();   
   }   
   xmlHttp.onreadystatechange = callback;   
   xmlHttp.open(…);   
   xmlHttp.send(null);   
}     
  
function callback{ }     
 

类比:xmlHttp发出请求就相当于你打电话给你的同学,xmlHttp不知道state何时发生变化,就相当于你不知道你的同学何时能解决问题。Callback函数就相当于你的电话号码, 
state发生变化时会调用callback函数,同样你的同学解决问题后会打电话通知你

 

自己练习的一个小例子,用到的回调+模板机制:

 

TransactionTemplate tt = new TransactionTemplate(this.getTransactionManager());
//TransactionCallback is a interface which has only one abstract method
tt.execute(new TransactionCallback(){ 
	public Object doInTransaction(TransactionStatus status){
		JdbcTemplate jdbc = new JdbcTemplate(getDataSource());
		jdbc.update("inert into users(username) values('dd');");
		return null;
	}
});

 

public Object execute(TransactionCallback action) throws TransactionException {
  if (this.transactionManager instanceof CallbackPreferringPlatformTransactionManager) {
    return ((CallbackPreferringPlatformTransactionManager) this.transactionManager).execute(this, action);
  } else {
     TransactionStatus status = this.transactionManager.getTransaction(this);//模板,获取参数
     Object result = null;
     try {
         result = action.doInTransaction(status);//调用传入引用的方法,也就是我们自己定义的功能			}
    catch (RuntimeException ex) {
        //Transactional code threw application exception -> rollback
         rollbackOnException(status, ex);
         throw ex;
    }catch (Error err) {rollbackOnException(status, err);throw err;}
    this.transactionManager.commit(status);
    return result;
  }
}

 callback机制优点显而易见,不用extends JdbcTemplate,十分灵活

 

结论:如果template 的每个步骤都需要我们实现,那么用callback就很难定制了,但是如果只需要很少甚至就一个步骤(比如JDBC中的sql操作方法[不关心事务的,因为已经由Template定制好了,我日!])就可以采用callback机制啦。我擦

分享到:
评论

相关推荐

    Android整合搭建RxJava+Retrofit+LiveData+OkHttp框架实现MVVM模式开发

    工程目录说明: base:基础类库。 exception:异常类模块。 ... ...model:数据模型,实体类定义。...repository:数据仓库,包括网络接口请求数据,sqlite数据库,文件File存储,SharedPreferences数据存储。...

    spring、ioc、aop、callback

    Spring 框架是 Java 开发中的一个核心组件,它为开发者提供了丰富的功能,包括依赖注入(IOC)、面向切面编程(AOP)以及回调机制。让我们深入了解一下这些概念。 **Spring IOC(Inversion of Control,控制反转)*...

    GWT整合Hibernate的一个小实例

    在本文中,我们将深入探讨如何将Google Web Toolkit (GWT) 整合到Hibernate框架中,以便在Web应用中实现数据库操作。通过一个简单的新增和查询实例,我们将阐述这一集成过程的关键步骤,并讨论相关配置文件和编程...

    Spring Dao层设计

    Spring 数据库访问的支持。包括统一异常体系和Spring的Template+CallBack的解读

    Spring源码缺失的spring-cglib-repack-3.2.6.jar和spring-objenesis-repack-2.6.jar

    CGlib的核心组件包括Enhancer、Callback和MethodInterceptor等,它们协同工作,使得Spring可以在不修改原有代码的情况下,实现动态代理和增强功能。 **Objenesis** Objenesis是一个轻量级库,用于在Java中创建对象...

    对hibernate的封装 HibernateTemplate

    **标题:“对hibernate的封装 HibernateTemplate”** 在Java Web开发中,Hibernate是一个非常流行的对象关系...对于想要了解Spring和Hibernate整合,以及提升数据库操作效率的开发者来说,这是一个重要的学习资源。

    Spring整合Redis哨兵

    **Spring整合Redis哨兵** 在高可用性系统中,Redis Sentinel是至关重要的组件,它提供了主从监控、故障检测和自动故障转移的功能。Spring作为Java生态中的主流框架,提供了与Redis Sentinel集成的能力,使得我们...

    HibernateCallback使用方法

    HibernateCallback 是 Spring 框架中与 Hibernate 整合的重要组件,通过它可以实现灵活的持久层访问。 在 Hibernate 中,SessionFactory 是一个非常重要的对象,它是单个数据库映射关系编译后的内存镜像。大部分...

    Spring+JMS+消息处理

    - **JMS Template(模板类)**:`JmsTemplate`是Spring JMS提供的核心组件之一,它简化了JMS消息的发送和接收过程。该模板类负责创建和管理JMS会话、连接及事务,并提供了多个方法用于发送消息或接收消息。 - **`...

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    在 Spring AOP 中,`ObjenesisCglibAopProxy` 类负责使用 CGLIB 创建代理对象,它会将一系列的 `MethodInterceptor` 注册为 `Callback`,这些 `MethodInterceptor` 执行了 AOP 的逻辑。 在 Spring AOP 的自动代理...

    springboot基于spring-retry实现重试机制

    本文将详细探讨如何在 Spring Boot 应用中基于 Spring Retry 实现重试机制,以及如何将其应用于支付回调和自定义重试场景。 首先,让我们了解 Spring Retry 的核心概念。Spring Retry 提供了一个 `@Retryable` 注解...

    Spring整合DWR comet 实现无刷新 多人聊天室代码整理

    Spring整合DWR(Direct Web Remoting)和Comet技术,是一种高效的实现Web应用程序实时通信的解决方案,特别适用于创建如多人聊天室这样的实时交互应用。在这个项目中,Spring作为后端框架,负责业务逻辑处理和控制...

    Spring源代码解析(三):Spring_JDBC.doc

    在Spring框架中,Spring JDBC是核心模块之一,它提供了一种简单且强大的方式来处理数据库交互。本篇文章将深入解析Spring JDBC的实现,特别是JdbcTemplate类。JdbcTemplate是Spring为简化数据库操作而设计的一个模板...

    json+callback实现无刷新demo

    json+callback实现无刷新demo,短小精悍

    hibernate3-2 官方jar包+api

    7. **Cache**:为了提高性能,Hibernate支持缓存机制,包括一级缓存(Session级别)和二级缓存(SessionFactory级别),能够减少对数据库的访问次数。 8. **懒加载(Lazy Loading)**:Hibernate支持延迟加载,即...

    ASP.NET2.0实现无刷新客户端回调的Callback机制

    在ASP.NET 2.0中,引入了一种新的技术,即客户端回调(Client Callback)机制,也称为 Partial Page Rendering 或 UpdatePanel,这使得开发者能够实现无刷新页面更新,提高用户体验。 客户端回调机制的核心是通过...

    hibernate_3.2官方开发包

    10. **Callback事件**:Hibernate允许在对象生命周期中的特定时刻(如加载、保存、更新和删除)注册回调方法,实现业务逻辑。 11. **Association Mapping关联映射**:Hibernate支持一对一、一对多、多对一、多对多...

    spring+srpingmvc+hibernate实现动态ztree生成树状图效果

    在本文中,我们将深入探讨如何使用Spring、SpringMVC和Hibernate框架来动态生成ZTree树状图效果。ZTree是一款强大的JavaScript实现的树形插件,适用于构建网站导航、组织结构展示等多种场景。以下是实现这一功能的...

    SSH整合文档

    SSH整合是Java开发中一种常见的框架集成方式,主要包括Spring、Struts2和Hibernate三个部分。这些框架的结合能够提供一个强大的、松耦合的MVC(Model-View-Controller)架构,便于开发复杂的Web应用程序。 **Spring...

    微软的CallBack机制

    微软的CallBack机制,只是了解了一下。不知道怎么实现复杂的功能,有时间网上查查,不知道有多少人在用。入门实例:http://blog.csdn.net/greatverve/archive/2008/12/23/3588353.aspx我的网址:www.0379zd.com

Global site tag (gtag.js) - Google Analytics