|
BoneCP是一個(gè)開(kāi)源的數(shù)據(jù)庫(kù)連接池,聽(tīng)說(shuō)比C3P0快好多倍(這個(gè)自己沒(méi)有驗(yàn)證過(guò))
關(guān)于它的介紹看這個(gè)吧:
http:///index.html
下面做一個(gè)簡(jiǎn)單的例子
創(chuàng)建一個(gè)Java項(xiàng)目,導(dǎo)入BoneCP依賴(lài)的JAR和數(shù)據(jù)庫(kù)驅(qū)動(dòng)JAR
BoneCP依賴(lài)的JAR文件
bonecp-0.7.0.jar google-collections-1.0.jar log4j-1.2.16.jar slf4j-log4j12-1.6.1.jar slf4j-api-1.6.1.jar (其中這個(gè)Hibernate3.6已經(jīng)提供了)
最好在提供一個(gè)log.properties文件 內(nèi)容如下:
- log4j.category.com.jolbox=DEBUG,Console
- # Stdout
- log4j.appender.Console=org.apache.log4j.ConsoleAppender
- log4j.appender.Console.layout=org.apache.log4j.PatternLayout
- log4j.appender.Console.layout.ConversionPattern=[%t] %-5p %c %x - %m%n
編寫(xiě)B(tài)oneCP的配置文件bonecp-config.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <bonecp-config>
- <default-config>
- <!-- 數(shù)據(jù)庫(kù)驅(qū)動(dòng) -->
- <property name="driverClass">com.mysql.jdbc.Driver</property>
- <!-- URL -->
- <property name="jdbcUrl">jdbc:mysql://localhost:3306/spring</property>
- <!-- 數(shù)據(jù)庫(kù)的用戶(hù)名 -->
- <property name="username">root</property>
- <!-- 數(shù)據(jù)庫(kù)的密碼 -->
- <property name="password">root</property>
- <!-- 檢查數(shù)據(jù)庫(kù)連接池中空閑連接的間隔時(shí)間,單位是分,默認(rèn)值:240,如果要取消則設(shè)置為0 -->
- <property name="idleConnectionTestPeriod">60</property>
- <!-- 連接池中未使用的鏈接最大存活時(shí)間,單位是分,默認(rèn)值:60,如果要永遠(yuǎn)存活設(shè)置為0 -->
- <property name="idleMaxAge">240</property>
- <!-- 每個(gè)分區(qū)最大的連接數(shù) -->
- <property name="maxConnectionsPerPartition">30</property>
- <!-- 每個(gè)分區(qū)最小的連接數(shù) -->
- <property name="minConnectionsPerPartition">10</property>
- <!-- 分區(qū)數(shù) ,默認(rèn)值2,最小1,推薦3-4,視應(yīng)用而定-->
- <property name="partitionCount">3</property>
- <!-- 每次去拿數(shù)據(jù)庫(kù)連接的時(shí)候一次性要拿幾個(gè),默認(rèn)值:2 -->
- <property name="acquireIncrement">5</property>
- <!-- 每個(gè)分區(qū)釋放鏈接助理進(jìn)程的數(shù)量,默認(rèn)值:3,除非你的一個(gè)數(shù)據(jù)庫(kù)連接的時(shí)間內(nèi)做了很多工作,不然過(guò)多的助理進(jìn)程會(huì)影響你的性能 -->
- <property name="releaseHelperThreads">3</property>
- </default-config>
- </bonecp-config>
測(cè)試:
- package test;
-
- import java.sql.Connection;
- import java.sql.SQLException;
-
- import com.jolbox.bonecp.BoneCPDataSource;
-
- public class Demo {
-
- public static void main(String[] args) {
- BoneCPDataSource dataSource = new BoneCPDataSource();
- dataSource.getConfigFile();
- Connection conn = null;
- try {
- long startTime = System.currentTimeMillis();
- for (int i = 0; i < 100; i++) {
- conn = dataSource.getConnection();
- }
- long endTime = System.currentTimeMillis();
- System.out.println("====================用時(shí):" + (endTime - startTime) + "ms====================");
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
關(guān)于BoneCP更多的配置,可以參考
http://www./sxyx2008/archive/2011/03/16/346386.html
下面做一個(gè)BoneCP與Spring的集成,只要在beans.xml配置如下即可:
- <!-- 配置數(shù)據(jù)庫(kù)連接池 -->
- <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
- <property name="driverClass" value="com.mysql.jdbc.Driver" />
- <property name="jdbcUrl" value="jdbc:mysql://localhost/spring" />
- <property name="username" value="root" />
- <property name="password" value="root" />
- <property name="idleConnectionTestPeriod" value="60" />
- <property name="idleMaxAge" value="240" />
- <property name="maxConnectionsPerPartition" value="30" />
- <property name="minConnectionsPerPartition" value="10" />
- <property name="partitionCount" value="3" />
- <property name="acquireIncrement" value="5" />
- <property name="statementsCacheSize" value="100" />
- <property name="releaseHelperThreads" value="3" />
- </bean>
|