`
maozilee
  • 浏览: 251499 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

使用BoneCP数据库连接池JAVA版本

阅读更多

 

BoneCP is a fast, free, open-source, Java database connection pool (JDBC Pool) library. If you are familiar with C3P0 and DBCP then you already know what this means. For the rest, this is a library that will manage a database connection for you to get faster database access in your application.
BoneCP is fast! For some tests, it's almost 25 times faster than the next fastest connection pool option, not to mention that BoneCP never spin-locks so it won't slow down your application.
官方主页:http://jolbox.com/
下载地址:http://jolbox.com/bonecp/downloads/maven/com/jolbox/bonecp/
目前最新版本为:0.7
依赖的jar包:

  • A database that accepts connections
  • A driver to go with it
  • Google Guava library, available for free from here.
  • The SLF4J logging library.
  • JDK1.5 or higher.


    bonecp-0.7.0.jar
    google-collections-1.0.jar
    log4j-1.2.15.jar
    mysql-connector-java-5.1.6-bin.jar(mysql驱动)
    slf4j-api-1.5.10.jar
    slf4j-log4j12-1.5.10.jar
    以上jar包可以在这里下载http://jolbox.com/bonecp/downloads/maven/

     

     

    在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();
                    }
                }
            }
        }
    }
    
  •  

  •  

     

    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();
                    }
                }
            }
        }
    }
     

     

     

    使用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。

    除此之外,还需要做如下配置:

     

    <!-- Hibernate SessionFactory -->  
    <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean" autowire="autodetect">  
        <property name="hibernateProperties">  
            <props>  
                <prop key="hibernate.connection.provider_class">com.jolbox.bonecp.provider.BoneCPConnectionProvider</prop>  
                <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>  
                <prop key="hibernate.connection.url">jdbc:mysql://127.0.0.1/yourdb</prop>  
                <prop key="hibernate.connection.username">root</prop>  
                <prop key="hibernate.connection.password">abcdefgh</prop>  
                <prop key="bonecp.idleMaxAge">240</prop>  
                <prop key="bonecp.idleConnectionTestPeriod">60</prop>  
                <prop key="bonecp.partitionCount">3</prop>  
                <prop key="bonecp.acquireIncrement">10</prop>  
                <prop key="bonecp.maxConnectionsPerPartition">60</prop>  
                <prop key="bonecp.minConnectionsPerPartition">20</prop>  
                <prop key="bonecp.statementsCacheSize">50</prop>  
                <prop key="bonecp.releaseHelperThreads">3</prop>  
            </props>  
        </property>  
    </bean>  
     

     

     

    参考:http://www.blogjava.net/sxyx2008/archive/2011/03/16/346384.html

    分享到:
    评论

    相关推荐

      bonecp数据库连接池使用Demo

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

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

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

      Java数据库连接池 BoneCP

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

      BoneCP 连接池学习笔记

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

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

      本实例源码是关于BoneCP数据库连接池的实现,它是一个高效且轻量级的连接池库,适用于Java环境。在本压缩包中,包含了配置文件bonecp-default-config.xml以及相关的类库。 首先,`bonecp-default-config.xml`是...

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

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

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

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

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

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

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

      不过,理解BoneCP的工作原理和优势,对于理解数据库连接池的概念和使用仍然具有参考价值。 在深入研究 BoneCP 的源码时,可以关注以下几个关键组件: 1. `ConnectionHandle`:这是 BoneCP 提供的接口,代表数据库...

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

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

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

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

      JAVA源码Java数据库连接池BoneCP

      JAVA源码Java数据库连接池BoneCP

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

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

      bonecp.rar_JAVA数据库_数据库

      BoneCP是一款高效、轻量级的数据库连接池实现,它在设计上注重了性能和内存使用效率,为Java应用提供了便捷的数据库连接管理。 BoneCP的核心功能包括: 1. 连接池管理:BoneCP能够创建一定数量的数据库连接,并将...

      Bonecp连接池java项目源代码(eclipse版)

      BoneCP是一个高效的、开源的Java数据库连接池,它在Java社区中被广泛使用,尤其适合于高并发的应用场景。此项目源代码是基于Eclipse开发的,提供了完整的工程结构,便于开发者理解和学习BoneCP的实现原理。 BoneCP...

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

      标题提到的“数据库连接池以及hibernate对各种连接池的整合”是指在Java应用中,特别是使用Hibernate作为持久层框架时,如何集成和配置不同的数据库连接池技术。以下是一些主要的开源数据库连接池及其特点: 1. **...

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

      本文将详细介绍几个常见的Java数据库连接池实现:C3P0、Druid、JNDI、DBCP、Proxool以及BoneCP,并结合Spring+MyBatis+maven环境下的应用示例进行解析。 1. C3P0: C3P0是一个开源的JDBC连接池,它实现了数据源和...

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

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

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

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

    Global site tag (gtag.js) - Google Analytics