Java數據庫之C3P0和DBCP框架

一、C3P0框架:

1、數據庫xml文件的配置:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>

  <default-config>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
	<property name="jdbcUrl">jdbc:mysql:///classwork</property>
	<property name="user">root</property>
	<property name="password">9919</property>
	<property name="initialPoolSize">5</property>
	<property name="maxPoolSize">20</property>
  </default-config>
  
  <named-config name="michong"> 
    <property name="driverClass">com.mysql.jdbc.Driver</property>
	<property name="jdbcUrl">jdbc:mysql:///classwork</property>
	<property name="user">root</property>
	<property name="password">9919</property>
  </named-config>

</c3p0-config>
<default-config>new ComboPooledDataSource()加載的
<named-config name="michong">new ComboPooledDataSource("michong")加載的

2、從幫助文檔中獲得c3p0-config.xml並修改相應的參數
常用的配置項
分類
屬性
描述
必須項
user
用戶名
password
密碼
driverClass
驅動
mysql驅動,com.mysql.jdbe.Driver
jdbcUrl
路徑
mysql 路徑,jdbc:mysql://localhost:3306/數據庫
基本配置
acquirelncrement
連接池無空閒連接可用時,一次性創建的新連接數
默認值:3
initialPoolSize
連接池初始化時創建的連接數 默認值:3
maxPoolSize
連接池中擁有的最大連接數 默認值:15
minPoolSize
連接池保持的最小連接數。
maxIdleTime
連接的最大空閒時間。如果超過這個時間,某 個數據庫連接還沒有被使用,則會斷開掉這個 連接,如果爲0,則永遠不會斷開連接。
默認值:0
管理連接池的大 小和連接的生存 時間(擴展)
maxConnectionAge
配置連接的生存時間,超過這個時間的連接將 由連接池自動斷開丟棄掉。當然正在使用的連 接不會馬上斷開,而是等待它close再斷開。配 置爲〇的時候則不會對連接的生存時間進行限 制。默認值0
maxIdleTimeExcessConnections
這個配置主要是爲了減輕連接池的負載,配置不爲〇,則會將連接池中的連接數量保持到 minPoolSize,0則不處理。
配置 Prepared Statement 緩存(擴
展)
maxStatements
連接池爲數據源緩存的PreparedStatement的總數。由於 PreparedStatement 屬於單個Connection,所以這個數量應該根據應用中平均連接數乘以每個連接的平均PreparedStatement來計算。爲0的時候不緩存,同時 maxStatementsPerConnection 的配置無效。
maxStatementsPerConne ction
連接池爲數據源單個Connection緩存的 PreparedStatement 數,這個配置比 maxStatements更有意義,因爲它緩存的服務對 象是單個數據連接,如果設置的好,肯定是可以提高性能的。爲0的時候不緩存。

3、自定義工具類:C3P0Utils:
import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Utils {

	private	static DataSource ds = new ComboPooledDataSource();
	
	//獲取連接池對象
	public static DataSource getDataSource(){
		return ds;
	}
	
	
	//獲取Connection對象
	public static Connection getConnection(){
		Connection conn;
		try {
			conn = ds.getConnection();
			return conn;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new RuntimeException();
		}
		
	}

二、DBCP框架的使用:
1、配置文件
配置文件名稱:*.properties
配置文件位置:任意,建議src (classpath/類路徑)
配置文件內容:properties不能編寫中文,必須使用記事本修改內容,否則中文註釋就亂碼了。
常用配置項
分類
屬性
描述
必須項
driverClassName
驅動
url
路徑
username
用戶名
password
密碼
基本項
maxActive
最大連接數量
minldle
最小空閒連接
maxldle
最大空閒連接
initialSize
初始化連接
優化配置(擴展)
logAbandoned
連接被泄露時是否打印
removeAbandoned
是否自動回收超時連接
removeAbandonedTimeout
超時時間(以秒數爲單位)
maxWait
超時等待時間以毫秒爲單位1000等於60
timeBetweenEvictionRunsMillis
在空閒連接回收器線程運行期間休眠的時間值,以毫秒爲單位
numTestsPerEvictionRun
在每次空閒連接回收器線程(如果有)運行時檢查的連接數量
minEvictableldleTimeMillis
連接在池中保持$閒而不被空閒連接回收器線程

2、封裝的DBCPUtils類:
public class DBCPUtils {
	
	private static DataSource ds ;
	static{
		try {
			//加載配置文件
			InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream("conninfo.properties");
			
			Properties p = new Properties();
			p.load(is);
			
			//通過DBCP獲得連接池
			ds = BasicDataSourceFactory.createDataSource(p);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	//獲得連接池
	public static DataSource getDataSource(){
		return ds;
	}

	//獲得連接對象
	public static Connection getConnection() throws SQLException{
		
		return ds.getConnection();
	}
}

用到的jar包



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章