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();
                    }
                }
            }
        }
    }
    点我下载本文工程代码
  • 你可能感兴趣的:(数据库连接池)