Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.springframework.jdbc.datasource.driverManager数据源相对于oracle.jdbc.pool.OracleDataSource的优势_Java_Spring_Oracle_Jdbc - Fatal编程技术网

Java org.springframework.jdbc.datasource.driverManager数据源相对于oracle.jdbc.pool.OracleDataSource的优势

Java org.springframework.jdbc.datasource.driverManager数据源相对于oracle.jdbc.pool.OracleDataSource的优势,java,spring,oracle,jdbc,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

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

<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" />


第一种配置特定于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>

可以外部化的属性值

您可以探索Apache Jakarta Commons DBCP,它具有DriverManager数据源的所有功能
还有连接池功能。

我不认为这有什么好处——文档本身清楚地表明,这在现实生活中的应用非常有限。限制在于它不使用任何类型的池,因此每次请求连接时,都会请求一个新的物理连接。如果你有一个单线程程序,它能够建立一次连接,并在整个生命周期中使用它,那么它在现实生活中唯一可能的用途就是(据我所知)。你所得到的只是你没有建立连接池的内存占用。是否也可以在“DriverCassName”中定义该类,以便保留通用容器但保留特定行为?编辑了我的原始帖子。你可以看看。
<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>