`

关于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;
 

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("  *  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;
 

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("  *  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("  *  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

分享到:
评论

相关推荐

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

    本文将详细介绍如何配置 BoneCP 连接池,以及对比C3P0的配置方法。 1. **BoneCP的基本概念与优势** - BoneCP 是一个开源的JDBC连接池实现,它通过高效的连接管理和复用来提高数据库操作的效率。 - 与C3P0相比,...

    BoneCP 连接池学习笔记

    ** BoneCP 连接池学习笔记 ** BoneCP 是一个高效、轻量级的 Java 数据库连接池(JDBC Connection Pool)实现。它在性能上优于其他同类连接池,如...阅读 "BoneCP 连接池.doc" 文件,可以获取更详细的配置和使用指导。

    bonecp连接池demo

    本篇将详细介绍BoneCP连接池的使用和核心概念,以及如何通过提供的示例代码进行配置和集成。 BoneCP的主要特点包括: 1. **线程安全**:BoneCP采用预分配的连接策略,确保每个线程都可以快速获取到已建立的数据库...

    BoneCp连接池详解及和Hibernate配置(当今最快的连接池)

    BoneCP是一款高效的数据库连接池,它以其出色的性能和稳定性赢得了开发者们的青睐。相较于其他常见的连接池如c3p0,BoneCP宣称能提供超过25倍的性能提升,这对于高并发、大数据量的Web应用来说尤其重要。在本文中,...

    BoneCP 连接池所用到的jar集合

    使用BoneCP连接池,通常需要以下jar文件: - `bonecp.jar`:BoneCP主库,包含了连接池的核心实现。 - `slf4j-api.jar`:简单日志门面(SLF4J),用于记录 BoneCP 的运行日志,可以与各种日志框架集成。 - `...

    BoneCP连接池和Ehcache注解缓存整合到Spring

    首先, BoneCP连接池的核心特性包括: 1. **连接复用**:BoneCP通过管理数据库连接的生命周期,实现了连接的复用,避免了频繁创建和关闭连接的开销。 2. **线程安全**:它设计为线程安全,每个请求都能获取到独立的...

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

    通过深入研究这个Eclipse项目,你可以学习到如何配置和使用BoneCP连接池,以及它在实际项目中的工作原理。这对你提升数据库管理能力,优化应用性能具有极大的帮助。同时,如果你对数据库连接池的实现感兴趣,源代码...

    基于Bonecp连接池的jdbc工具类及jar包

    首先, BoneCP连接池的设计目标是提高性能,减少内存消耗,并通过线程安全的连接复用来提高多线程环境下的并发能力。它采用了一些高级策略,如预分配和缓存连接,以确保在高负载情况下也能快速响应数据库请求。 ...

    DBCP+C3P0+BoneCP连接池参数说明

    ### BoneCP连接池参数说明 BoneCP是一款高性能的数据库连接池,它采用了一种分片策略来提高并发性能。以下是一些关键参数: 1. **partitionCount**: 数据库连接池的分区数,每个分区有自己的连接池。 2. **...

    bonecp连接池

    这里给出bonecp连接池,用了就知道好了 #bonecp properties #分区数量 bonecp.partitionCount = 1 #每个分区含有的最小连接数 bonecp.minConnectionsPerPartition = 1 #每个分区含有的最大连接数 bonecp....

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

    6. 分布式环境支持:虽然BoneCP本身不直接支持分布式环境,但可以通过配置中间件如Apache Commons Pool或HikariCP来实现跨节点的连接池共享。 源码分析时,我们可以关注以下关键类和方法: - `...

    JDBC连接池BoneCP_Demo

    BoneCP_Demo 是一个示例项目,展示了如何在Java应用中集成并使用BoneCP连接池进行数据库操作。通过理解和实践这个Demo,开发者可以更好地理解JDBC连接池的工作原理,以及如何利用BoneCP提升数据库操作的性能和效率...

    bonecp 连接池

    4. **监控与调优**: 可以使用 BoneCP提供的监控接口或日志来分析连接池的使用情况,进行性能调优。 在压缩包的`META-INF`目录下,通常包含 BoneCP的配置信息和元数据,例如服务列表、许可证信息等。而`com`目录则...

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

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

    BoneCP的xml使用实例

    总结起来,这个实例展示了如何通过XML配置文件管理BoneCP连接池,并在Java代码中加载和使用这些配置。理解并正确配置这些参数对于优化应用程序的性能和资源利用至关重要。同时,掌握如何在代码中与配置文件交互也是...

    Java数据库连接池 BoneCP

    - 使用连接池的最佳实践包括合理配置连接池参数、及时关闭数据库连接、监控连接池状态以及根据业务需求选择合适的连接池实现。 总之,BoneCP作为一款优秀的Java数据库连接池,为Java开发者提供了高效、可靠的...

    Bonecp参数配置.pdf

    BoneCP是一种高效的数据库连接池(Database Connection Pool)实现,它被设计用来提高应用程序在处理数据库连接时的性能和效率。连接池允许重复使用已建立的数据库连接,避免了每次需要连接数据库时创建新连接的开销...

    BoneCP(连接oracle例子+jar包)

    3. **初始化 BoneCP**:在代码中加载配置文件,并初始化BoneCP连接池。 ```java BoneCPConfig config = new BoneCPConfig(); config.setConfigFile("path/to/bonecp.properties"); BoneCP pool = new BoneCP...

    Bonecp参数配置[借鉴].pdf

    BoneCP是一种高效的数据库连接池(JDBC Connection Pool)实现,用于优化Java应用的数据库访问性能。在软件开发中,配置数据库连接池是非常重要的一步,因为它直接影响到应用的响应速度和资源利用率。以下是对BoneCP...

Global site tag (gtag.js) - Google Analytics