2011-02-25 70 views
33

我有一個非常基本的配置基本春天JDBC應用程序:春天JDBC連接池的最佳實踐

<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="oracle.jdbc.OracleDriver"/> 
    <property name="url" value="jdbc:oracle:thin:@1.1.1.1:1521:XXX"/> 
    <property name="username" value="username"/> 
    <property name="password" value="password"/> 
</bean> 

<bean id="dbThing" class="com.DbThing"> 
    <property name="dataSource" ref="myDataSource"/> 
</bean> 

我想向大家介紹一個連接池和所以這裏讀幾條線後我有點對使用哪個池庫感到困惑。

似乎在SO上有更多信用的庫是CP30DBCP。由於我使用Oracle,因此我也可以使用驅動程序提供的pooled data source。 我知道有更多的庫可用 - 例如新的Apache Tomcat 7池庫。

有沒有我應該避免的圖書館?

是否有任何推薦的配置,我應該使用給定的庫?

你喜歡分享的任何「戰爭故事」嗎?

回答

19

C3PO和DBCP開發停滯的主要原因是它們已經成熟。我已經看到這兩個驅動程序能夠支持每秒數百個事務。

Tomcat池是一個重做的&更新的DBCP驅動程序。 MyBatis 3.0還包含它自己的池化實現,它基於代碼檢查,似乎很穩固。最後,有BoneCP,聲稱有最好的表現。我還沒有在項目中使用過這些。

也許最好的建議是挑他們中的任何一個來測試它。 Spring可以很容易地在以後換出。

+3

BoneCP不再活動。你也可以看看HikariCP這是一個固定的連接池,並有很好的性能優勢。 [HikariCP](https://github.com/brettwooldridge/HikariCP)的網頁。 – muruga 2016-04-24 23:45:28

17

作爲BoneCP的替代方案,您是否嘗試過使用Oracle自己的數據庫連接池?

我在過去幾周裏有過很好的經驗,所以可能值得一試 - 我想Oracle會知道關於連接池的一些事情,尤其是在與自己配對時數據庫。

<bean id="dataSource" class="oracle.jdbc.pool.OracleConnectionPoolDataSource"> 
    <property name="URL" value="${jdbc.url}" /> 
    <property name="user" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
</bean> 

UPDATE:另外,如果你使用(之一)最新的Oracle JDBC驅動程序(11.2.0.1+),你可能想嘗試新的通用連接池。 OracleConnectionPoolDataSource似乎正式被棄用贊成這個池。但是,有些用戶報告了使用它的錯誤,因此可能爲時過早。我可以使用Oracle最新的JDBC驅動程序,因此,只要有任何有關此信息的信息,我都會盡力在此進行更新。這個SO線程

更多信息:Oracle UCP

8

BoneCP一直聲稱但隨後一個新工具引入命名爲HiKariCP它已經克服了這些存在於通工具很多缺點,你可以在下面的改變application-context.xml

通過配置它
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig"> 
    <property name="maximumPoolSize" value="10" /> 
    <property name="minimumPoolSize" value="2" /> 
    <property name="dataSourceClassName" 
      value="oracle.jdbc.pool.OracleDataSource" /> 
    <property name="dataSourceProperties" ref="props" /> 
    <property name="poolName" value="springHikariCP" /> 
</bean> 

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"> 
     <constructor-arg ref="hikariConfig" /> 
</bean> 

<util:properties id="props" location="classpath:datasource.properties"/> 

database.properties,你應該提供數據庫的詳細信息,如下面

url=jdbc:oracle:thin:@IP:port:SID/Databasename 
user=usernmae 
password=password 

爲了正確演示您可以使用this link

+1

感謝您回答這個問題,它有助於解決我們HikariCP開發人員的負擔。 – brettw 2014-12-12 11:55:07

+0

你的歡迎@brettw如果它對你有幫助你可以投票:) – 2014-12-12 12:33:52

+1

感謝您指出HiKaRi!。hikariConfig的小更新。不知道如何格式化評論: 2016-06-15 15:56:42