分享

BoneCP数据库连接池

 aaie_ 2016-05-08

BoneCP是一个开源的数据库连接池,听说比C3P0快好多倍(这个自己没有验证过)

关于它的介绍看这个吧:

http:///index.html 

 

下面做一个简单的例子

创建一个Java项目,导入BoneCP依赖的JAR和数据库驱动JAR

 

BoneCP依赖的JAR文件

bonecp-0.7.0.jar
google-collections-1.0.jar
log4j-1.2.16.jar
slf4j-log4j12-1.6.1.jar   
slf4j-api-1.6.1.jar   (其中这个Hibernate3.6已经提供了)

 

最好在提供一个log.properties文件 内容如下:

Xml代码  收藏代码
  1. log4j.category.com.jolbox=DEBUG,Console  
  2. # Stdout  
  3. log4j.appender.Console=org.apache.log4j.ConsoleAppender  
  4. log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
  5. log4j.appender.Console.layout.ConversionPattern=[%t] %-5p %c %x - %m%n  

 

 

编写BoneCP的配置文件bonecp-config.xml

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <bonecp-config>  
  3.     <default-config>  
  4.         <!-- 数据库驱动 -->  
  5.         <property name="driverClass">com.mysql.jdbc.Driver</property>  
  6.         <!-- URL -->  
  7.         <property name="jdbcUrl">jdbc:mysql://localhost:3306/spring</property>  
  8.         <!-- 数据库的用户名 -->  
  9.         <property name="username">root</property>  
  10.         <!-- 数据库的密码 -->  
  11.         <property name="password">root</property>  
  12.         <!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 -->  
  13.         <property name="idleConnectionTestPeriod">60</property>  
  14.         <!-- 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0 -->  
  15.         <property name="idleMaxAge">240</property>  
  16.         <!-- 每个分区最大的连接数 -->  
  17.         <property name="maxConnectionsPerPartition">30</property>  
  18.         <!-- 每个分区最小的连接数 -->  
  19.         <property name="minConnectionsPerPartition">10</property>  
  20.         <!-- 分区数 ,默认值2,最小1,推荐3-4,视应用而定-->  
  21.         <property name="partitionCount">3</property>  
  22.         <!-- 每次去拿数据库连接的时候一次性要拿几个,默认值:2 -->  
  23.         <property name="acquireIncrement">5</property>  
  24.         <!-- 每个分区释放链接助理进程的数量,默认值:3,除非你的一个数据库连接的时间内做了很多工作,不然过多的助理进程会影响你的性能 -->  
  25.         <property name="releaseHelperThreads">3</property>  
  26.     </default-config>  
  27. </bonecp-config>  

 

测试:

Java代码  收藏代码
  1. package test;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.SQLException;  
  5.   
  6. import com.jolbox.bonecp.BoneCPDataSource;  
  7.   
  8. public class Demo {  
  9.   
  10.     public static void main(String[] args) {  
  11.         BoneCPDataSource dataSource = new BoneCPDataSource();  
  12.         dataSource.getConfigFile();  
  13.         Connection conn = null;  
  14.         try {  
  15.             long startTime = System.currentTimeMillis();  
  16.             for (int i = 0; i < 100; i++) {  
  17.                 conn = dataSource.getConnection();  
  18.             }  
  19.             long endTime = System.currentTimeMillis();  
  20.             System.out.println("====================用时:" + (endTime - startTime) + "ms====================");  
  21.         } catch (SQLException e) {  
  22.             e.printStackTrace();  
  23.         } finally {  
  24.             try {  
  25.                 conn.close();  
  26.             } catch (SQLException e) {  
  27.                 e.printStackTrace();  
  28.             }  
  29.         }  
  30.     }  
  31. }  

 

 关于BoneCP更多的配置,可以参考

http://www./sxyx2008/archive/2011/03/16/346386.html

 

下面做一个BoneCP与Spring的集成,只要在beans.xml配置如下即可:

Xml代码  收藏代码
  1. <!-- 配置数据库连接池 -->  
  2.     <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">  
  3.         <property name="driverClass" value="com.mysql.jdbc.Driver" />  
  4.         <property name="jdbcUrl" value="jdbc:mysql://localhost/spring" />  
  5.         <property name="username" value="root" />  
  6.         <property name="password" value="root" />  
  7.         <property name="idleConnectionTestPeriod" value="60" />  
  8.         <property name="idleMaxAge" value="240" />  
  9.         <property name="maxConnectionsPerPartition" value="30" />  
  10.         <property name="minConnectionsPerPartition" value="10" />  
  11.         <property name="partitionCount" value="3" />  
  12.         <property name="acquireIncrement" value="5" />  
  13.         <property name="statementsCacheSize" value="100" />  
  14.         <property name="releaseHelperThreads" value="3" />  
  15.     </bean>  

 

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约