1. 程式人生 > >資料庫連線池、讀取properties配置檔案小結

資料庫連線池、讀取properties配置檔案小結

C3P0連線池:


直接通過java程式碼設定連線池(需要在工程目錄下匯入c3p0和資料庫連線的jar包):
步驟:  1.建立C3P0資料來源物件
2.設定資料庫連線基本資訊
3.設定資料庫連線池引數
import java.sql.Connection;

import com.mchange.v2.c3p0.ComboPooledDataSource;
//C3P0Pool連線池

public class C3P0Pool {
	public static void main(String[] args) throws Exception {
		//第一步:建立C3P0資料來源物件
		ComboPooledDataSource dataSource = new ComboPooledDataSource();
		//第二步:設定資料庫連線基本資訊
		//設定資料庫來接驅動
		dataSource.setDriverClass("oracle.jdbc.OracleDriver");
		//設定資料連線URL
		dataSource.setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");
		//設定資料庫連線賬號
		dataSource.setUser("xiaogang");
		//設定資料庫連線賬號的密碼
		dataSource.setPassword("xiaogang");
		//第三步:設定資料庫連線池引數
		//設定資料庫連線池中連線的最小數量
		dataSource.setMinPoolSize(30);
		//設定資料庫連線池中連線的初始數量
		dataSource.setInitialPoolSize(30);
		//設定資料庫連線池中連線的最大數量
		dataSource.setMaxPoolSize(50);
		//未達到最大連線數,當前需要新增連線數量設定
		dataSource.setAcquireIncrement(10);
		
		
		long start=System.currentTimeMillis();
		for(int i=0;i<1000;i++){
			Connection con=dataSource.getConnection();
			con.close();
		}
		long end=System.currentTimeMillis();
		System.out.println(end - start);
		
	}
}

利用properties檔案設定資料庫連線基本資訊:
步驟:  1.配置檔案位於src目錄下,配置檔案路徑應遵循類載入方式
InputStream in = null;
in=C3P0Pool.class.getClassLoader().getResourceAsStream("com/xiaogang/jdbcc3p0.properties")
2.將檔案和Properties物件關聯
Properties config = new Properties();
config.load(in);
3.可以通過config物件的config.getProperty("driver"));獲取檔案中的屬性
備註:
//Properties屬性資訊(屬性名和屬性值)
Properties prop = new Properties();
//儲存資料格式:屬性名=屬性值
//方法:put(attName,attValue);
prop.put("name", "xiaosan");
prop.put("now", new Date());
//獲取屬性的值: String getProperty(name)
String value=prop.getProperty("name");
System.out.println("name:"+value);
//獲取屬性的值:  Object  get(key)

String nowValue=prop.get("now").toString();

import java.beans.PropertyVetoException;

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

import com.mchange.v2.c3p0.ComboPooledDataSource;


public class C3P0Pool {
	
	private static ComboPooledDataSource dataSource;
	private static Properties config = new Properties();
	
	private static void init(){
		try {
			//裝載配置檔案
			config.load(C3P0Pool.class.getClassLoader()
					.getResourceAsStream("com/heres/jdbcc3p0.properties"));
			//宣告C3P0資料來源物件
			dataSource = new ComboPooledDataSource();
			//設定資料庫連線驅動
			dataSource.setDriverClass(
					config.getProperty("driver"));
			//設定資料連線URL
			dataSource.setJdbcUrl(
					config.getProperty("url"));
			//設定資料庫連線使用者賬號
			dataSource.setUser(
					config.getProperty("user"));
			//設定資料庫連線使用者賬號的密碼
			dataSource.setPassword(
					config.getProperty("password"));

			//設定資料庫連線池中的初始化連線物件數量
			dataSource.setInitialPoolSize(30);			
			//設定資料庫連線池中的最小連線物件數量
			dataSource.setMinPoolSize(30);
			//設定資料庫連線池中的最大連線物件數量
			dataSource.setMaxPoolSize(60);
			//當連線不夠,每次新增連線數量
			dataSource.setAcquireIncrement(10);
			
		} catch (IOException e) {
			e.printStackTrace();
		} catch(PropertyVetoException e){
			e.printStackTrace();
		}
		
	}
	
	public static void main(String[] args) throws SQLException{
		init();
		
		int i=1000;
		long beginTime = System.currentTimeMillis();
		while(i-->0){
			Connection con = dataSource.getConnection();
			con.close();
		}
		long endTime = System.currentTimeMillis();
		long time = endTime - beginTime;
		System.out.println("處理時間:"+time);
	}
	
}

對應的properties檔案:
user=scott
password=tiger
driver=oracle.jdbc.driver.OracleDriver
url=jdbc\:oracle\:thin\:@127.0.0.1\:1521\:orcl

dbcp連線池(需要在工程目錄下匯入commons-pool.jar、commons-beanutils.jar、commons-dbcp.jar、commons-logging.jar和資料庫連線的jar包):

import java.sql.Connection;

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

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;


public class DBCPPool {
	
	private static DataSource dataSource=null;
	private static Properties dbconfig = new Properties();
	
	public static void init(){
		try {
			//裝載配置檔案
			dbconfig.load(DBCPPool.class.getClassLoader()
					.getResourceAsStream("com/heres/jdbcdbcp.properties"));
			System.out.println(dataSource);
			//通過工廠類去建立資料來源物件
			dataSource=BasicDataSourceFactory.createDataSource(dbconfig);
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) throws SQLException{
		init();
		
		int i=1000;
		long beginTime = System.currentTimeMillis();
		while(i-->0){
			Connection con = dataSource.getConnection();
			con.close();
		}
		long endTime = System.currentTimeMillis();
		long time = endTime - beginTime;
		System.out.println("處理時間:"+time);
	}
	
	
}
對應得配置檔案:
username=scott
password=tiger
driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc\:oracle\:thin\:@127.0.0.1\:1521\:orcl