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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值