JdbcTemplate的CallBack回调机制很巧妙,算是aop的一种实现吧
使用JdbcTemplate省掉了我们打开和关闭connection的操作,同时需要一提的是在CallBack接口实现类的Connection处于auto-commit状态,在CallBack的实现方法不能进行事物管理。
execute代码
public Object execute(ConnectionCallback action) throws DataAccessException {
Assert.notNull(action, "Callback object must not be null");
Connection con = DataSourceUtils.getConnection(getDataSource());
try {
Connection conToUse = con;
if (this.nativeJdbcExtractor != null) {
// Extract native JDBC Connection, castable to OracleConnection or the like.
conToUse = this.nativeJdbcExtractor.getNativeConnection(con);
}
else {
// Create close-suppressing Connection proxy, also preparing returned Statements.
conToUse = createConnectionProxy(con);
}
return action.doInConnection(conToUse);
}
catch (SQLException ex) {
// Release Connection early, to avoid potential connection pool deadlock
// in the case when the exception translator hasn't been initialized yet.
DataSourceUtils.releaseConnection(con, getDataSource());
con = null;
throw getExceptionTranslator().translate("ConnectionCallback", getSql(action), ex);
}
finally {
DataSourceUtils.releaseConnection(con, getDataSource());
}
}
CallBack是一个接口,其中定义了doInConnection(conn),把要写的逻辑写在此方法中。
我们只需要传入一个conn即可,创建conn是前处理,关闭conn是后处理。 免去了这些繁琐的操作。JdbcTemplate的其它方法也是利用CallBack实现的
分享到:
相关推荐
JdbcTemplate是spring-jdbc提供的数据库核心操作类,那对JdbcTemplate进行事务控制呢?
使用Spring的JdbcTemplate实现分页功能
JdbcTemplate 调用存储过程
jdbcTemplate分页彻底解决,使用游标滚动jdbcTemplate分页彻底解决,使用游标滚动
spring-jdbcTemplate实例工程
JdbcTemplate使用就是JdbcTemplate的使用 再说两遍JdbcTemplate使用就JdbcTemplate的使用 20字够了
JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等。spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现。 除了大量...
提供了使用Spring的jdbcTemplate需要导入的五个jar包
SpringJdbcTemplate封装工具包,包括规范model格式接口,封装SpringJdbcTemplate,实现分页,自适应多种数据库
简单的jdbcTemplate预编译、回调等
JdbcTemplate CRUD示例
使用Spring的JdbcTemplate调用Oracle的存储过程
JdbcTemplate基本使用 JDBC已经能够满足大部分用户最基本的需求,但是在使用JDBC时,必须自己来管理数据库资源如:获取PreparedStatement,设置SQL语句参数,关闭连接等步骤。 JdbcTemplate是Spring对JDBC的...
JdbcTemplate是一个框架,是用来操作数据库的,有些羡慕就是用JdbcTemplate开发的所有我们有必要去了解
spring中使用JdbcTemplate操作数据库crud,一图详解(脑图)
我们的项目经理编写的JDBCTemplate框架,特别好用!
NULL 博文链接:https://yunzhongxia.iteye.com/blog/611591
spring mvc注解方式整合jdbctemplate
JavaEE JdbcTemplate的简单示例