數據庫鏈接池(dbcp,c3p0)的簡單實現

  1. dbcp數據庫鏈接池
    java

就性能而言,1.4版本的鏈接池性能比1.2版本高,跟c3p0差很少mysql

使用此數據庫鏈接池必須導入commons-dbcp,commons-pool包,如下是其實現方法:sql

import java.sql.SQLException;
import java.sql.Statement;

import org.apache.commons.dbcp.BasicDataSource;

//dbcp數據庫鏈接池鏈接方法
public class BasicDbcp {
	public static void main(String[] args) throws SQLException {
		String url="jdbc:mysql://localhost:3306/test";
		String dr="com.mysql.jdbc.Driver";
		//實例化數據源對象
		BasicDataSource ds=new BasicDataSource();
		//設置屬性
		ds.setDriverClassName(dr);
		ds.setUrl(url);
		ds.setUsername("root");
		ds.setPassword("123");
		System.err.println("被包裹的數據鏈接(內部私有類):"+ds.getConnection().getClass());
		Statement sta= ds.getConnection().createStatement();
		ResultSet rs= sta.executeQuery("select * from user");
		while(rs.next()){
			System.out.println(rs.getString("name"));
		}
		rs.close();
		sta.close();
		ds.close();
		
	}
}

同時也能夠在屬性文件(properties)中存放基本屬性,而後再在其中獲取:數據庫

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;


//根據配置文件來鏈接數據庫
public class BasicDbcpProperties {
	private static DataSource ds=null;
	public BasicDbcpProperties(){
		//聲明資源文件對象
		Properties pro=new Properties();
		try {
			//load方法來獲取此文件
			//以流的方式將此文件傳送過來
			pro.load(this.getClass().getResourceAsStream("jdbc.properties"));
			//以 工廠類來建立這個DataSource資源
			ds=BasicDataSourceFactory.createDataSource(pro);
			Connection con=ds.getConnection();
			System.out.println(con);
			con.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args) throws SQLException {
		//初始化10個鏈接以後,不會再自動增長鏈接,所以此處沒有設計好
		Connection con=null;
		long start=System.currentTimeMillis();
		new BasicDbcpProperties();
		for(int i=0;i<17;i++){
			con=ds.getConnection();
			System.out.println(con);
		}
		long end=System.currentTimeMillis();
		System.out.println(end-start);
	}
}

2.C3P0數據庫鏈接池
apache

只須要導入C3P0-0.9.jar包便可
性能

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.DataSources;

public class C3PODemo {
	public static void main(String[] args) throws PropertyVetoException, SQLException {
	        //獲取DataSource
		ComboPooledDataSource ds=new ComboPooledDataSource();
		ds.setDriverClass("com.mysql.jdbc.Driver");
		ds.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/wj");
		ds.setUser("root");
		ds.setPassword("root");
		ds.setInitialPoolSize(3);
		ds.setMinPoolSize(10);
		ds.setMinPoolSize(5);
		Connection con=ds.getConnection();
		System.out.println(con);
		System.err.print(con);
		DataSources.destroy(ds);
	}
}
相關文章
相關標籤/搜索