Java中的BoneCP数据库连接池

Helper threads: 5

点我下载本文工程代码
在jdbc中使用BoneCP连接池


package  com.bonecp;
 
import  java.sql.Connection;
import  java.sql.ResultSet;
import  java.sql.SQLException;
import  java.sql.Statement;
 
import  com.jolbox.bonecp.BoneCP;
import  com.jolbox.bonecp.BoneCPConfig;
 
/**  
 * 
@author  sxyx2008
 *
 
*/
public   class  ExampleJDBC {
 
    
public   static   void  main(String[] args) {
        BoneCP connectionPool 
=   null ;
        Connection connection 
=   null ;
 
        
try  {
            
//  load the database driver (make sure this is in your classpath!)
            Class.forName( " com.mysql.jdbc.Driver " );
        } 
catch  (Exception e) {
            e.printStackTrace();
            
return ;
        }
        
        
try  {
            
//  setup the connection pool
            BoneCPConfig config  =   new  BoneCPConfig();
            config.setJdbcUrl(
" jdbc:mysql://localhost:3306/demo " );  //  jdbc url specific to your database, eg jdbc:mysql: // 127.0.0.1/yourdb
            config.setUsername( " root " ); 
            config.setPassword(
" root " );
            
// 设置每60秒检查数据库中的空闲连接数
            config.setIdleConnectionTestPeriod( 60 );
            
// 设置连接空闲时间
            config.setIdleMaxAge( 240 );
            
// 设置每个分区中的最大连接数 30
            config.setMaxConnectionsPerPartition( 30 );
            
// 设置每个分区中的最小连接数 10
            config.setMinConnectionsPerPartition( 10 );
            
// 当连接池中的连接耗尽的时候 BoneCP一次同时获取的连接数
            config.setAcquireIncrement( 5 );
            
// 连接释放处理
            config.setReleaseHelperThreads( 3 );
            
// 设置分区  分区数为3
            config.setPartitionCount( 3 );
            
// 设置配置参数
            connectionPool  =   new  BoneCP(config);  //  setup the connection pool
            
            connection 
=  connectionPool.getConnection();  //  fetch a connection
            
            
if  (connection  !=   null ){
                System.out.println(
" Connection successful! " );
                Statement stmt 
=  connection.createStatement();
                ResultSet rs 
=  stmt.executeQuery( "  select * from person  " );  //  do something with the connection.
                 while (rs.next()){
                    System.out.println(rs.getString(
1 ));  //  should print out "1"'
                    System.out.println(rs.getString( 2 ));  //  should print out "1"'
                }
            }
            connectionPool.shutdown(); 
//  shutdown connection pool.
        }  catch  (SQLException e) {
            e.printStackTrace();
        } 
finally  {
            
if  (connection  !=   null ) {
                
try  {
                    connection.close();
                } 
catch  (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


使用DataSource

package  com.bonecp;

import  java.sql.Connection;
import  java.sql.ResultSet;
import  java.sql.SQLException;
import  java.sql.Statement;

import  com.jolbox.bonecp.BoneCPDataSource;

public   class  ExampleDataSource {
    
    
public   static   void  main(String[] args) {
        
        Connection connection 
=   null ;
        
        
try  {
            Class.forName(
" com.mysql.jdbc.Driver " );
        } 
catch  (Exception e) {
            e.printStackTrace();
        }
        
        BoneCPDataSource dataSource
= new  BoneCPDataSource();
        dataSource.setUsername(
" root " );
        dataSource.setPassword(
" root " );
        dataSource.setJdbcUrl(
" jdbc:mysql://localhost:3306/demo " );
        dataSource.setMaxConnectionsPerPartition(
10 );
        dataSource.setMinConnectionsPerPartition(
5 );
        dataSource.setIdleConnectionTestPeriod(
60 );
        dataSource.setIdleMaxAge(
240 );
        dataSource.setAcquireIncrement(
5 );
        dataSource.setReleaseHelperThreads(
3 );
        
try  {
            connection
= dataSource.getConnection();
            
if  (connection  !=   null ){
                System.out.println(
" Connection successful! " );
                Statement stmt 
=  connection.createStatement();
                ResultSet rs 
=  stmt.executeQuery( "  select * from person  " );  //  do something with the connection.
                 while (rs.next()){
                    System.out.println(rs.getString(
1 ));  //  should print out "1"'
                    System.out.println(rs.getString( 2 ));  //  should print out "1"'
                }
            }
        } 
catch  (SQLException e) {
            e.printStackTrace();
        }
finally {
            
try  {
                connection.close();
            } 
catch  (SQLException e) {
                e.printStackTrace();
            }
        }
        
        
    }
    
}


在Hibernate中使用BoneCP
在Hibernate中使用BoneCP除了需要上面提到的jar包之外,还需要下载一个名为bonecp-provider-0.7.0.jar的bonecp-provider的jar包,它的下载位置是:http://jolbox.com/bonecp/downloads/maven/com/jolbox/bonecp-provider/0.7.0/bonecp-provider-0.7.0.jar。
除此之外,还需要做如下配置:

  1. <!-- Hibernate SessionFactory -->  
  2. <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean" autowire="autodetect">  
  3.     <property name="hibernateProperties">  
  4.         <props>  
  5.             <prop key="hibernate.connection.provider_class">com.jolbox.bonecp.provider.BoneCPConnectionProvider</prop>  
  6.             <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>  
  7.             <prop key="hibernate.connection.url">jdbc:mysql://127.0.0.1/yourdb</prop>  
  8.             <prop key="hibernate.connection.username">root</prop>  
  9.             <prop key="hibernate.connection.password">abcdefgh</prop>  
  10.             <prop key="bonecp.idleMaxAge">240</prop>  
  11.             <prop key="bonecp.idleConnectionTestPeriod">60</prop>  
  12.             <prop key="bonecp.partitionCount">3</prop>  
  13.             <prop key="bonecp.acquireIncrement">10</prop>  
  14.             <prop key="bonecp.maxConnectionsPerPartition">60</prop>  
  15.             <prop key="bonecp.minConnectionsPerPartition">20</prop>  
  16.             <prop key="bonecp.statementsCacheSize">50</prop>  
  17.             <prop key="bonecp.releaseHelperThreads">3</prop>  
  18.         </props>  
  19.     </property>  
  20. </bean>  

xml方式配置bonecp

 

<? xml version = " 1.0 "  encoding = " UTF-8 " ?>
< bonecp - config >   
  
< default - config >   
    
< property name = " jdbcUrl " > jdbc:oracle:thin:@ 127.0 . 0.1 : 1521 :orcl </ property >   
    
< property name = " username " > scott </ property >   
    
< property name = " password " > tiger </ property >   
    
< property name = " partitionCount " > 3 </ property >   
    
< property name = " maxConnectionsPerPartition " > 30 </ property >   
    
< property name = " minConnectionsPerPartition " > 10 </ property >   
    
< property name = " acquireIncrement " > 3 </ property >   
  
</ default - config >    
</ bonecp - config >  
连接代码

package  com.bonecp;
 
import  java.sql.Connection;
import  java.sql.ResultSet;
import  java.sql.SQLException;
import  java.sql.Statement;

import  com.jolbox.bonecp.BoneCP;
import  com.jolbox.bonecp.BoneCPConfig;
 
/**  
 * 
@author  sxyx2008
 *
 
*/
public   class  ExampleJDBC {
 
    
public   static   void  main(String[] args) {
        BoneCP connectionPool 
=   null ;
        
        Connection connection 
=   null ;
        
try  {
            
//  load the database driver (make sure this is in your classpath!)
            Class.forName( " oracle.jdbc.driver.OracleDriver " );
        } 
catch  (Exception e) {
            e.printStackTrace();
            
return ;
        }
        
        
try  {
            
//  setup the connection pool
            BoneCPConfig config  =   null ;
            
try  {
                config 
=   new  BoneCPConfig( " bonecp-config.xml " );
            } 
catch  (Exception e) {
                e.printStackTrace();
            }
            
/*
            config.setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl"); // jdbc url specific to your database, eg jdbc:mysql://127.0.0.1/yourdb
            config.setUsername("scott"); 
            config.setPassword("tiger");
            //设置每60秒检查数据库中的空闲连接数
            config.setIdleConnectionTestPeriod(60);
            //设置连接空闲时间
            config.setIdleMaxAge(240);
            //设置每个分区中的最大连接数 30
            config.setMaxConnectionsPerPartition(30);
            //设置每个分区中的最小连接数 10
            config.setMinConnectionsPerPartition(10);
            //当连接池中的连接耗尽的时候 BoneCP一次同时获取的连接数
            config.setAcquireIncrement(5);
            //连接释放处理
            config.setReleaseHelperThreads(3);
            //设置分区  分区数为3
            config.setPartitionCount(3);
            
*/
            
// 设置配置参数
            connectionPool  =   new  BoneCP(config);  //  setup the connection pool
            
            
long  startTime = System.currentTimeMillis();
            
// 创建100个连接
             for  ( int  i  =   0 ; i  <   100 ; i ++ ) {
                connection 
=  connectionPool.getConnection();  //  fetch a connection
            }
            
long  endtTime = System.currentTimeMillis();
            
            System.out.println(
" -------->total seconds : " + (endtTime - startTime));
            
            
if  (connection  !=   null ){
                System.out.println(
" Connection successful! " );
                Statement stmt 
=  connection.createStatement();
                ResultSet rs 
=  stmt.executeQuery( "  select * from emp  " );  //  do something with the connection.
                 while (rs.next()){
                    System.out.println(rs.getString(
1 ));  //  should print out "1"'
                    System.out.println(rs.getString( 2 ));  //  should print out "1"'
                }
            }
            connectionPool.shutdown(); 
//  shutdown connection pool.
        }  catch  (SQLException e) {
            e.printStackTrace();
        } 
finally  {
            
if  (connection  !=   null ) {
                
try  {
                    connection.close();
                } 
catch  (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
点我下载本文工程代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值