`

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

    相关推荐

      Java中的BoneCP数据库连接池用法.doc

      Java 中的 BoneCP 数据库连接池用法 BoneCP 是一个开源的 Java 数据库连接池,它的官方网站网址是 http://jolbox.com/。据 BoneCP 官方网站报告称,BoneCP 比性能排名第二的 Java 数据库连接池性高高 25 倍以上,...

      bonecp数据库连接池使用Demo

      采用bonecp数据库连接池封装了Jdbc,当时也是网上下载了一份代码,发现不能用,只好自己修改代码,现在这个代码是可以直接运行的,测试用的Sql Server 2008,表很简单,就四个字段

      Java数据库连接池 BoneCP

      BoneCP是一款轻量级、高性能的Java数据库连接池,设计目标是解决传统数据库连接池在高并发环境下的性能瓶颈问题。 BoneCP的核心原理是预先创建并维护一定数量的数据库连接,这些连接存储在一个池中,当应用程序需要...

      BoneCP 连接池学习笔记

      BoneCP 是一个高效、轻量级的 Java 数据库连接池(JDBC Connection Pool)实现。它在性能上优于其他同类连接池,如 C3P0 和 DBCP,尤其适用于高并发场景。在深入理解 BoneCP 之前,我们先来了解一下数据库连接池的...

      基于Java的实例源码-数据库连接池 BoneCP.zip

      通过分析这个压缩包,我们可以了解到如何在Java应用中集成和配置BoneCP数据库连接池,以及它内部的工作原理。在实际开发中,使用 BoneCP 可以有效地管理数据库连接,降低系统资源消耗,提高应用的响应速度和并发处理...

      数据库连接池BoneCP源码分析报告

      BoneCP是一款高效、轻量级的Java数据库连接池实现,它的源码分析对于我们理解数据库连接池的工作原理,优化数据库性能以及进行二次开发具有重要意义。 首先,我们需要了解数据库连接池的基本概念。数据库连接池是...

      Java数据库连接池的原理与应用.pdf

      在使用数据库连接池时,常见的连接池实现有DBCP、C3p0、TomcatJdbcPool、BoneCP和Druid等。以DBCP为例,使用它需要导入commons-dbcp.jar和commons-pool.jar包。在Maven项目中,需要在pom.xml配置文件中添加相应的...

      开源数据库连接池bonecp附教程

      骨CP(BoneCP)是一款高性能、轻量级的开源Java数据库连接池,它以其高效的并发性能和优秀的资源管理而受到开发者的青睐。本教程将深入探讨骨CP的基本概念、安装配置、使用方法以及优化策略。 一、骨CP简介 骨CP是...

      基于java的数据库连接池 BoneCP.zip

      在BoneCP中,`META-INF`可能还包含服务提供者接口(SPI)的配置,使得其他应用可以通过Java的SPI机制发现并使用BoneCP作为数据库连接池。 总的来说,`基于java的数据库连接池 BoneCP.zip`是一个包含BoneCP连接池...

      基于Java的数据库连接池 BoneCP.zip

      BoneCP是一个高效、轻量级的Java数据库连接池实现,设计目标是提供比其他连接池更高的并发性能。在这个"基于Java的数据库连接池 BoneCP.zip"压缩包中,我们可以找到与 BoneCP 相关的关键配置文件和组件。 首先,`...

      java数据库连接池-bonecp java源码

      Java数据库连接池(Database Connection Pool)是Java应用中用于管理数据库连接的重要技术,它通过复用已存在的数据库连接,减少了创建和销毁连接的开销,从而显著提升了应用程序的性能和效率。BoneCP是一款高效的...

      java源码:Java数据库连接池 BoneCP.jar

      java源码:Java数据库连接池 BoneCP.jar

      基于java的开发源码-数据库连接池 BoneCP.zip

      基于java的开发源码-数据库连接池 BoneCP.zip 基于java的开发源码-数据库连接池 BoneCP.zip 基于java的开发源码-数据库连接池 BoneCP.zip 基于java的开发源码-数据库连接池 BoneCP.zip 基于java的开发源码-数据库...

      JAVA数据库连接池(C3P0,Druid,JNDI ,DBCP,Proxool,BoneCP)

      数据库连接池在Java应用开发中扮演着至关重要的角色,它能有效地管理数据库连接,提高系统性能,降低资源消耗。本文将详细介绍几个常见的Java数据库连接池实现:C3P0、Druid、JNDI、DBCP、Proxool以及BoneCP,并结合...

      数据库连接池以及hibernate对各种连接池的整合

      数据库连接池的基本原理是预先创建一定数量的数据库连接,当应用程序需要访问数据库时,可以从池中获取一个已建立的连接,使用完毕后归还给池而不是直接关闭,这样避免了频繁的创建和销毁连接带来的开销。...

      关于JAVA的数据库连接池的探讨.pdf

      本文探讨了JAVA中的数据库连接池,首先提出了性能问题,然后针对该问题进行了调查,并找到 原因:是数据源配置引起的,进一歩对带连接池的数据源进行了总结。本文还提供了一个方向,并且对连接池的数据源配置进行了...

      bonecp连接数据库所需jar

      首先,`bonecp-0.7.1.RELEASE.jar`是BoneCP数据库连接池的主要库文件,包含了所有与 BoneCP 相关的类和接口。BoneCP 提供了线程安全的数据库连接管理,通过池化技术实现了数据库连接的复用,减少了创建和销毁数据库...

      数据库连接池BoneCP源码分析报告.doc

      BoneCP 是一个轻量级、高性能的 Java 数据库连接池,本文将深入剖析其源码,理解其工作原理和实现机制。 1. **BoneCP 简介** BoneCP 是由 Jeff Smith 创建的一个开源数据库连接池,它设计的目标是提供比 C3P0 和 ...

      比c3p0还快的bonecp连接池配置方法讲解

      骨CP(BoneCP)是一款高性能的Java数据库连接池(JDBC Connection Pool)库,它以其高效性能和轻量级的设计而受到开发者的欢迎。在某些测试中,BoneCP被证明比C3P0快约25倍,这使得它成为在高并发场景下优化数据库...

    Global site tag (gtag.js) - Google Analytics