我有一个基本的Spring 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上有更多学分的图书馆是CP30和DBCP . 由于我使用的是Oracle,我也可以使用驱动程序提供的pooled data source . 我知道有更多的库可用 - 例如新的Apache Tomcat 7池库 .
有没有我应该避免的图书馆?
我应该在给定的库中使用任何推荐的配置吗?
你想分享的任何“战争故事”?
4 回答
C3PO和DBCP的发展已停滞不前,主要是因为它们已经成熟 . 我已经看到这两个驱动程序每秒能够支持数百个事务 .
Tomcat池是一个经过重新设计和更新的DBCP驱动程序 . MyBatis 3.0还包含它's own pooling implementation which, based on code inspection, seems solid. Finally, there' s BoneCP,声称具有最佳性能 . 我还没有在项目中使用过这些 .
可能最好的建议是选择其中任何一个进行测试 . Spring可以让以后轻松换出 .
作为BoneCP的替代方案,您是否尝试过Oracle自己的数据库连接池?
我在过去的几个星期里有过很好的经历,所以值得一试 - 同样,我想Oracle会知道关于创建连接池的一两件事,特别是在与自己的数据库配对时 .
UPDATE :此外,如果您正在使用(最新的)一个Oracle JDBC驱动程序(11.2.0.1),您可能需要尝试新的通用连接池 .
OracleConnectionPoolDataSource
似乎已被正式弃用,以支持此池 . 但是,有些用户报告使用它时出错,所以可能为时尚早 . 我可以使用Oracle的最新JDBC驱动程序,所以我会尽快给它一个更新,并在此有任何信息 .有关此SO线程的更多信息:Oracle UCP
BoneCP
一直在声称,但随后引入了一个名为HiKariCP
的新工具,它克服了传递工具中存在的许多缺点,您可以通过以下更改来配置它application-context.xml
在
database.properties
中你应该提供如下数据库的详细信息要获得正确的演示,您可以使用this link
绝对可以使用C3P0,这是为企业解决方案而开发的 . 要检查优势,您可以follow this answer .
Here is the example code of integration:
这个Bean用于获取
JpaTransactionManager
.这个Bean用于获取
LocalContainerEntityManagerFactoryBean
. 它从hibProperties()
获取DataSource
,PersistenceProviderClass
,实体包名PackagesToScan
和JpaProperties .在这里,
env value are comming from application.properties
.检查波纹管属性:
The main part is DataSource Setup. That is given bellow :
它正在使用
ComboPooledDataSource
,它正在采用更多重要参数,如maxPoolSize,MinPoolSize,MaxIdleSize等. It's environment parameter are given bellow:Here is the full working sample code:
另一件事 . 这是gradle链接
希望这会帮助你 . 谢谢 :)