c3p0入门

一、什么是C3P0

      C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

 

二、下载及使用

     最新的版本可以在这个网址:http://sourceforge.net/projects/c3p0/ 下载,本文为此,最新版本为0.9.1.2,使用方法非常简单,只要把lib文件夹中的c3p0-0.9.1.2.jar文件放在你的第三方包引用路径中就行了。

     然后我们编写一个类,作为连接池。

    

import java.beans.PropertyVetoException;
import java.sql.Connection;
import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * 数据库连接池
 * 
 * @author tntxia
 * 
 */
public class Connections {

	/**
	 * 数据库连接池 使用C3P0数据库连接池 避免大量的数据库连接影响数据库性能
	 */
	private static ComboPooledDataSource ds = new ComboPooledDataSource();
	/**
	 * 数据库连接池初始化
	 */
	static {
		ds.setJdbcUrl("jdbc:mysql://localhost:3306/puzzle");
		ds.setUser("root");
		ds.setPassword("root");
		ds.setAcquireIncrement(15);
		ds.setInitialPoolSize(20);
		ds.setMinPoolSize(10);
		ds.setMaxPoolSize(500);
		ds.setAcquireRetryAttempts(5);
		ds.setMaxIdleTime(10);
		ds.setCheckoutTimeout(5000);

		try {
			ds.setDriverClass("com.mysql.jdbc.Driver");
		} catch (PropertyVetoException e) {

		}
		ds.setMaxStatements(0);
	}
	public static Connection getConnection() {
		Connection conn = null;
		try {
			conn = ds.getConnection();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
}

 

      这样,我们不再每次都去生成一个数据库连接,而是Connections.getConnection()方法,从连接池里面获取一个数据库链接,避免了生成数据库链接,而且还可以重复使用一些数据库连接。

 

      注意:c3p0使用了JDBC 2 的规范,有一个数据库的驱动没有完成JDBC 2的规范,所以在使用时会提示错误,一般功能的使用不会受到影响。

你可能感兴趣的:(sql,Hibernate,.net,mysql,jdbc)