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

来源:互联网 发布:利用软件漏洞获利 编辑:程序博客网 时间:2024/05/21 17:30

本篇文章主要讲解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 

collectionhttp://commons.apache.org/proper/commons-collections/download_collections.cgi

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

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

driverClassName=com.mysql.jdbc.Driverurl=jdbc\:mysql\://localhost\:3306/ahpuusername=rootpassword=123defaultAutoCommit=trueinitialSize=3maxActive=10maxIdle=3minIdle=1maxWait=-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;}}



0 0
原创粉丝点击