我目前在项目中使用此配置:
<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>
从文档中看,最后一个选项似乎没有使用连接池。我认为没有理由使用这种配置而不是我的,但它仍然存在,所以我很好奇:优势/限制在哪里?
答案 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 以及连接池功能。