Spring对JDBC的抽象和对Hibernate的集成,都采用了一种理念或者处理方式,那就是模板方法模式与相应的Callback接口相结合。
采用模板方法模式是为了以一种统一而集中的方式来处理资源的获取和释放,以JdbcTempalte为例,如下:
public abstract class JdbcTemplate {
public final Object execute(String sql){
Connection con=null;
Statement stmt=null;
try
{
con=getConnection();
stmt=con.createStatement();
Object retValue=executeWithStatement(stmt,sql);
return retValue;
}
catch(SQLException e){
...
}
finally
{
closeStatement(stmt);
releaseConnection(con);
}
}
protected abstract Object executeWithStatement(Statement stmt, String sql);
}
这样处理之后,JDBC代码的使用得到了规范,连接释放等问题也得到了统一的管理。
但是,JdbcTemplate是抽象类,不能够独立使用,我们每次进行数据访问的时候都要给出一个相应的子类实现,这样肯定不方便,所以就引入了回调。
public interface StatementCallback{
Object doWithStatement(Statement stmt);
}
public class JdbcTemplate {
public final Object execute(StatementCallback callback){
Connection con=null;
Statement stmt=null;
try
{
con=getConnection();
stmt=con.createStatement();
Object retValue=callback.doWithStatement(stmt);
return retValue;
}
catch(SQLException e){
...
}
finally
{
closeStatement(stmt);
releaseConnection(con);
}
}
...//其它方法定义
}
使用如下:
JdbcTemplate jdbcTemplate=...;
final String sql=...;
StatementCallback callback=new StatementCallback(){
public Object=doWithStatement(Statement stmt){
return ...;
}
}
jdbcTemplate.execute(callback);
分享到:
相关推荐
前端开源库-request-idle-callback请求空闲回调,window.requestIdleCallback的浏览器填充程序
AN-IND-1-012_CAPL_Callback_Interface
详细理解C指针-指针函数与函数指针和回调函数 非常基础易懂
复用和扩展是模板模式的两大作用,实际上,还有另外一个技术概念,也能起到跟模板模式相同的作用,那就是回调(Callback)。A 类事先注册某个函数 F 到 B类
【英文参考资料】-AUTOSAR学习资料无人驾驶-AN-IND-1-012_CAPL_Callback_Interface
justauth-spring-boot-starter-demo 此 demo 主要演示 Spring Boot 如何使用 justauth-spring-boot-starter 集成 JustAuth 快速开始 1. 基础配置 引用依赖 <groupId>com.xkcoding</groupId> <artifactId>justauth-...
spring、ioc、aop、callback,自己写着玩,感觉挺不错的,也能加深对框架等理解
terraform-tower-gcp-post-provision-callback-demo
安装方法$ npm install wechat-corp-service-callback使用方法前提首先,你要有一个企业号。然后,你要申请成为第三方企业套件的供应商。接下来才可以创建套件,并且设置套件应用。用法其中的token,encodingAESKey...
... 该插件使您可以: ...安装 您必须在节点6+上运行webpack(4.x)。... const HtmlWebpackCustomCallbackPlugin = require ( 'html-webpack-custom-callback-plugin' ) ; 在您的Webpack配置对象中,添加
使用promise.then(回调,回调)会错过错误 —字节弓箭手(@bytearcher) [removed] </ script> 运行使用 nvm install v4.2.1 npm install && npm test
Evernote iOS x-callback-url 支持 Evernote iOS 应用从 7.5 版开始支持 x-callback-url。 一些应用程序已经在使用这种集成,例如和 。 这是的示例 写了很棒的关于 Evernote iOS 中的 x-callback-url 支持以及我们...
回调承诺npm install --save fn-callback-promisify用法 import { promisify } from 'fn-callback-promisify' ; const fnObj = { print : ( content , callback ) => { callback ( content === 'fail' ? 'new error'...
bootstrap-daterangepicke 是一个时间控件,该文件里面有汉化js文件,还有几个官方模板可参考,我自己写了一个汉化后的html页面,想学习的可以参考一下。
Meteor jQuery 动画回调使用 jquery 对 CSS3 动画的简单回调安装meteor add gwendall:jquery-animation-callback方法$(选择器).onAnimationEnd(回调) $(selector).onTransitionEnd(回调) $(selector)....
C-Lambda 和回调 许多编程语言都支持 Lambda 表达式。... // In callback function // This is for double check, preventing unexpeted bug while (isBufferEmpty( buffer_t )); bufferRead ( buffer_
Spring 集成事件总线 Java/Spring 项目的事件总线库,基于 Spring 集成框架。 事件驱动架构促进了事件发布者和事件订阅者之间松散耦合的交互。 事件本质上是具有附加语义的消息,这就是为什么许多事件基础设施都...
android hello-jniCallback sample
Ansible-ansible-callback-grafana-annotations.zip,执行剧本时自动在grafana中发布注释!不推荐:这个插件是Ansible 2.6版的一部分。修补应在那里进行。,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理...
资源来自pypi官网。 资源全名:pl-minio-callback-1.0.4.tar.gz