`

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();
                    }
                }
            }
        }
    }
    点我下载本文工程代码
  • 分享到:
    评论

    相关推荐

    Global site tag (gtag.js) - Google Analytics