or 实现类。但有些数据源(如 Jakarta Commons DBCP)会对所有的 JDBC 对象进行代理,这时,就需要根据具体的情况选择适合的抽取器实现类了。下表列出了不同数据源本地 JDBC 对象抽取器的实现类:
数据源类型 |
说明 |
WebSphere 4 及以上版本的数据源 |
org.springframework.jdbc.support.nativejdbc.WebSphereNativeJdbcExtractor |
WebLogic 6.1+ 及以上版本的数据源 |
org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractor |
JBoss 3.2.4 及以上版本的数据源 |
org.springframework.jdbc.support.nativejdbc.JBossNativeJdbcExtractor |
C3P0 数据源 |
org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor |
DBCP 数据源 |
org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor |
ObjectWeb 的 XAPool 数据源 |
org.springframework.jdbc.support.nativejdbc.XAPoolNativeJdbcExtractor |
Spring让LOB数据操作变得简单易行(2)
时间:2011-02-14 IBM 陈雄华
下面的代码演示了从 DBCP 数据源中获取 DB2 的本地数据库连接 DB2Connection 的方法:
清单 1. 获取本地数据库连接
package com.baobaotao.dao.jdbc;
import java.sql.Connection;
import COM.ibm.db2.jdbc.net.DB2Connection;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.datasource.DataSourceUtils;
public class PostJdbcDao extends JdbcDaoSupport implements PostDao {
public void getNativeConn(){
try {
Connection conn = DataSourceUtils.getConnection(getJdbcTemplate()
.getDataSource()); ① 使用 DataSourceUtils 从模板类中获取连接
② 使用模板类的本地 JDBC 抽取器获取本地的 Connection
conn = getJdbcTemplate().getNativeJdbcExtractor().getNativeConnection(conn);
DB2Connection db2conn = (DB2Connection) conn; ③ 这时可以强制进行类型转换了
…
} catch (Exception e) {
e.printStackTrace();
}
}
}
在 ① 处我们通过 DataSourceUtils 获取当前线程绑定的数据连接,为了使用线程上下文相关的事务,通过 DataSourceUtils 从数据源中获取连接是正确的做法,如果直接通过 dateSource 获取连接,则将得到一个和当前线程上下文无关的数据连接实例。
JdbcTemplate 可以在配置时注入一个本地 JDBC 对象抽取器,要使代码 清单 1 正确运行,我们必须进行如下配置:
清单 2. 为 JdbcTemplate 装配本地 JDBC 对象抽取器
…
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
① 定义 DBCP 数据源的 JDBC 本地对象抽取器
<bean id="nativeJ
|