Java Web程序設計——數據庫連接池與DBUtils工具

Java Web程序設計——數據庫連接池與DBUtils工具

數據庫連接池

什麼是數據庫連接池
  • 在使用JDBC編程時,每次訪問數據庫都需要創建對象,訪問完畢後也需要斷開連接(銷燬對象)。爲了避免頻繁的創建數據庫連接,提出來數據庫連接池技術。
  • 應用程序就不需要創建和斷開連接對象,而是交給數據庫連接池管理。
  • 數據庫連接池斷開,不是銷燬對象,而是把連接對象歸還給連接池。
  • 數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重複使用現有的數據庫連接,而不是重新建立。
  • 採用數據庫連接池操作數據庫的示意圖:
    在這裏插入圖片描述
  • 優點:通過數據庫連接池管理連接對象,減少了數據庫連接對象的創建和銷燬,提高了數據庫的訪問效率。
  • 數據庫連接池基本參數:
  1. 初始化大小:數據庫連接池裏面初始的連接對象個數
  2. 最大連接數:數據庫連接池裏面最大的連接對象個數
  3. 最大等待時間:用戶通過連接池取連接對象時,需要等待的世界
  4. 最大空閒連接:數據庫連接池裏面,在用戶訪問趨於穩定時,最大空閒連接個數
  5. 最小空閒連接:在用戶訪問趨於頂峯時,數據庫連接池裏面剩餘的最小連接對象個數。

DataSource接口

  • 爲了獲取數據庫連接對象(Connection),JDBC提供了javax.sql.DataSource接口,它負責與數據庫建立連接,並定義了返回值Connection對象的方法:
Connection getConnection()
Connection getConnection(String username,String password)
  • 習慣性的把實現了javax.sql.DataSource接口的類稱爲數據源,即數據的來源。在數據源中存儲了所有建立數據庫連接的信息。

在這裏插入圖片描述

DBCP數據源

  • DBCP數據源連接池(DataBase Connection Pool),是由apache組織提供的數據庫連接池技術,開源免費。
  • 在項目開發中,使用DBCP的基本步驟:
  1. 前提導入DBCP的jar包:commons-dbcp.jar,commons-pool.jar
  2. DBCP獲取連接對象:設置連接參數。四個連接參數:driverName,url,username,password

例:

package chapter10;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;


public class Example01 {
	public static DataSource ds = null;
	static {
		//獲取DBCP數據源實現類對象
		BasicDataSource bds = new BasicDataSource();
		//設置連接數據庫所需要的四個連接參數
		bds.setDriverClassName("com.mysql.jdbc.Driver");
		bds.setUrl("jbdc:mysql://localhost:3306/jdbc");
		bds.setUsername("root");
		bds.setPassword(null);
		//設置連接池參數
		bds.setInitialSize(5);  //初始化參數
		bds.setMaxIdle(10); 
		ds = bds;
	}
	public static void main(String[] args) throws SQLException {
		//數據庫連接池獲取連接對象
		Connection con = ds.getConnection();
		//獲取連接參數
		DatabaseMetaData metaData = con.getMetaData();
		System.out.println(metaData.getURL());
		System.out.println(metaData.getUserName());
		System.out.println(metaData.getDriverName());
	}
}

  • BasicDataSource類的常用方法:
    在這裏插入圖片描述

C3P0數據源

  • C3P0數據源是目前最流行的數據庫連接池技術之一,它的性能更加優越,也提供了對後期數據框架hibernate很好的支持,它是開源免費的。
  • 在項目開發中,使用C3P0的基本步驟:
  1. 前提導入C3P0的jar包,提供了C3P0的核心類方法
  2. 設置連接參數:四個連接參數:driverName,url,username,password

例:

package chapter10;

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

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class Example02 {
	public static DataSource ds = null;
	// 初始化C3P0數據源
	static {
		ComboPooledDataSource cpds = new ComboPooledDataSource();

		try {
			// 設置四個連接參數
			cpds.setDriverClass("com.mysql.jdbc.Driver");
			cpds.setJdbcUrl("jdbc:mysql://localhost:3306/jdbc");
			cpds.setUser("root");
			cpds.setPassword("");
			// 設置連接池參數
			cpds.setInitialPoolSize(5);
			cpds.setMaxPoolSize(15);
			ds = cpds;
		} catch (PropertyVetoException e) {
			// TODO 自動生成的 catch 塊
			e.printStackTrace();
		}
	}
	public static void main(String[] args) throws SQLException {
		System.out.println(ds.getConnection());
	}
}

  • ComboPooledDataSource類常用的方法:
    在這裏插入圖片描述

DBUtils工具

  • DBUtils工具介紹:是由apache提供。是commons組件一員。是對jdbc簡單的封裝,減少操作數據庫的代碼。使用前,需要導入DBUtils的jar包。
QueryRunner類
  • QueryRunner類是DBUtils組件下的核心類,通常和ResultSetHandler接口配合使用,對jdbc代碼進行了簡單的封裝,減少操作數據庫大代碼量。
  • QueryRunner類提供了集中常見的方法:
query(String,ResultSetHandler rsh,Object... params)
update(String sql,Object... params)
update(String sql)
ResultSetHandler接口
  • ResultSetHandler接口用於處理ResultSet結果集,它可以將結果集中的數據轉爲不同的形式。
  • ResultSetHandler提供了集中常見的實現類,具體如下:

在這裏插入圖片描述

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