Spring JDBC connection pool best practices Spring JDBC connection pool best practices spring spring

Spring JDBC connection pool best practices


C3PO and DBCP development have stalled mostly because they are mature. I have seen both of these drivers be able to support hundreds of transactions per second.

The Tomcat pool is a reworked & updated DBCP driver. MyBatis 3.0 also contains it's own pooling implementation which, based on code inspection, seems solid. Finally, there's BoneCP which claims to have the best performance. I haven't used any of these on a project yet.

Probably the best advice is to pick any of them test it. Spring makes it easy to swap out later.


As an alternative to BoneCP, have you perhaps tried Oracle's own database connection pool?

I've had good experiences for the last couple of weeks, so it might be worth giving it a shot - also, I suppose Oracle would know a thing or two about making a connection pool especially when paired up with their own database.

<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: Also, if you're using (one of) the latest Oracle JDBC drivers (11.2.0.1+), you may want to try out the new Universal Connection Pool. The OracleConnectionPoolDataSource seems to be officially deprecated in favour of this pool. However, some users have reported errors using it, so it may be too early. I am in a position to use Oracle's latest JDBC drivers, so I will give it a try and update here as soon as have any info on this.

More info on this SO thread: Oracle UCP


BoneCP has been claiming but then a new tool is introduced named HiKariCP it has overcomed many drawbacks which were present in pass tools you can configure it by below change in 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"/>

where in database.properties you should provide details of database like below

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

For proper demo you can use this link