两种开源的数据源---C3P0和DBCP

来源:互联网 发布:dts音效软件怎么下载 编辑:程序博客网 时间:2024/05/20 04:31
前提概要:
    c3p0是一种开源的数据源,也是hibernate推荐使用的数据源。这里我们只使用应用程序单独测试下这两种数据源,有兴趣的同学可以整合下服务器再测试下这两种数据源。dbcp也是一种开源的数据源,不过性能上并没有c3p0那样好,所以我们一般推荐使用c3p0。我们通常说的连接池是包含在数据源中,数据源通常包含连接池和连接池管理。

下面根据eg测试下这两种数据源单独在应用程序中的具体使用。 在文章的最后,我们附上这两种数据源的jar文件。
1.c3p0

工具类:

import java.beans.PropertyVetoException;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JdbcC3p0 {

public static ComboPooledDataSource getDataSource() {

ComboPooledDataSource ds = new ComboPooledDataSource();
try {
ds.setDriverClass("com.mysql.jdbc.Driver"); //加载驱动 
ds.setJdbcUrl("jdbc:mysql://localhost:3306/test");//数据库连接的url
ds.setUser("root");//用户名
ds.setPassword("root");//密码
ds.setMaxPoolSize(20);//最大连接数
ds.setMinPoolSize(5);//最小
ds.setInitialPoolSize(10);//初始连接数
ds.setMaxStatements(200);//可缓存的最大statement对象
} catch (PropertyVetoException e) {
e.printStackTrace();
}

return ds;
}
}

2 .dbcp数据源

工具类:

import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;


public class JdbcPool {

public static BasicDataSource getDataSource() throws SQLException {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver"); //加载驱动
ds.setUrl("jdbc:mysql://localhost:3306/test");//数据库连接的url
ds.setUsername("root");//数据库用户名
ds.setPassword("root");//数据库用户的密码
ds.setInitialSize(5); //初始连接数
ds.setMaxActive(20);//最大连接数
ds.setMinIdle(2);//空闲连接数
return ds;
}
}

测试主类:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Test {

public static void main(String[] args) throws Exception {
Connection conn = JdbcC3p0.getDataSource().getConnection();//使用c3p0连接池
//Connection conn =JdbcPool.getDataSource().getConnection();//使用dbcp连接池
String sql = "select * from person";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
System.out.println(rs.getInt(1)+","+rs.getString(2));
}
conn.close(); //归还连接池
}

}  
原创粉丝点击