org.springframework.jdbc.datasource.DriverManagerDataSource优于oracle.jdbc.pool.OracleDataSource

时间:2015-07-28 07:56:20

标签: java spring oracle jdbc

我目前在项目中使用此配置:

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"
    destroy-method="close">
        <property name="URL" ...
         <property name="user" ...
        <property name="password" ...
        <property name="connectionCachingEnabled" value="true" />

它运行良好,非常快。 我碰巧在一个旧项目(春季2.5)上看到了这个配置:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
        <value>oracle.jdbc.driver.OracleDriver</value>
    </property>
    <property name="url"...
    <property name="username" ...
    <property name="password" ...
</bean>

从文档中看,最后一个选项似乎没有使用连接池。我认为没有理由使用这种配置而不是我的,但它仍然存在,所以我很好奇:优势/限制在哪里?

1 个答案:

答案 0 :(得分:4)

第一个配置是oracle特定的,而第二个配置是通用的。您可以显式定义驱动程序类。 除了OracleDataSource的连接池支持之外,这是我可以看到的唯一主要区别。

您可以将其用于通用行为,如下所述:

<bean id="baseDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
abstract="true">
<property name="username" value="user"/>
<property name="password" value="pwd" />
</bean>

<bean id="mySqlDataSource" parent="baseDataSource">
<property name="driverClassName" value="${mySQL.driver}" />
<property name="url" value="${mySQL.url}"/>
</bean>

<bean id="oracleDataSource" parent="baseDataSource">
<property name="driverClassName" value="${oracle.driver}" />
<property name="url" value="${oracle.url}"/>
</bean>

您可以外部化的属性值。

您可以探索具有DriverManagerDataSource所有功能的Apache Jakarta Commons DBCP 以及连接池功能。