您的位置:首页 > 数据库

开源数据库连接池C3P0,DBCP的使用

2014-08-19 11:25 471 查看
本篇文章主要讲解C3P0、DBCP两个开源数据库连接池的使用,不涉及一些性能方面,我也只是刚刚了解,下面步入正题:

1. DBCP

DBCP是apache的java数据库连接池开源项目,大家可以到apache官网上下载dbcp的jar包,但由于这个dbcp又依赖apache的另外两个组件(pool,collection),共三个jar包
dbcp:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi  

pool : http://commons.apache.org/proper/commons-pool/download_pool.cgi
 

collection:http://commons.apache.org/proper/commons-collections/download_collections.cgi

建议大家下载的时候不要下载高版本的,高版本稳定性不太好,差不多兼容jdk1.5以后就行了。

以上三个jar下载好之后导入自己要是用的工程,当然了,如果要链接数据库当然要有数据库的驱动jar包,在工程的根目录下创建一个dbcp.properties的配置文件,我的配
置如下:

driverClassName=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/ahpu
username=root
password=123
defaultAutoCommit=true
initialSize=3
maxActive=10
maxIdle=3
minIdle=1
maxWait=-1
下面就是编写如何使用dbcp,具体的我不一一说明了,下面是我的java文件,大家自己看吧:

package com.datasource;

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DataSourceManager {
private static DataSourceManager instance = new DataSourceManager();

private DataSource pool = null;

private DataSourceManager(){
init();
}

public void init(){
Properties prop = null;
InputStream is = null;
try {
prop = new Properties();
is = new FileInputStream("dbcp.properties");
prop.load(is);
pool = BasicDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
e.printStackTrace();
}
}

public static DataSourceManager getInstance(){
return instance;
}

public Connection getConnection(){
Connection conn = null;
try {
conn = pool.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(conn.getClass());
return conn;
}

}


2 . 讲讲C3P0的用法,C3P0也是一个开源的项目,现在使用的也很普遍,一些知名的框架中也都用它的连接池,C3P0 jar包:http://sourceforge.net/projects/c3p0/files/
下载过之后,里面有两个jar包,导入到工程即可,首先也要在工程根目录建一个配置文件c3p0.properties,名字起啥都无所谓,内容和上面配置文件内容一样,以下是我的实例代码

package com.datasource;

import java.beans.PropertyVetoException;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DataBaseManager {

private static DataBaseManager instance = new DataBaseManager();
private ComboPooledDataSource cpds = null;

private DataBaseManager(){
init();
}

private void init(){
cpds = new ComboPooledDataSource();
Properties prop = readConfig();
try {
cpds.setDriverClass(prop.getProperty("driverClassName"));
} catch (PropertyVetoException e) {
e.printStackTrace();
}
cpds.setUser(prop.getProperty("username"));
cpds.setPassword(prop.getProperty("password"));
cpds.setJdbcUrl(prop.getProperty("url"));
}

private Properties readConfig(){
Properties prop = new Properties();
try{
InputStream is = new FileInputStream("c3p0.properties");
prop.load(is);
}catch (Exception e) {
e.printStackTrace();
}
return prop;
}

public static DataBaseManager getInstance(){
return instance;
}

public Connection getConnection(){
Connection conn = null;
try {
conn = cpds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java dbcp c3p0