2011-02-25 39 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