Skip to content

Latest commit

 

History

History
73 lines (58 loc) · 2.09 KB

數據庫連接池.md

File metadata and controls

73 lines (58 loc) · 2.09 KB

數據庫連接池

介紹

用池來管理 Connection, 這可以重複使用 Connection。有了池,所以我們就不用自己來創建 Conneciton, 而是通過池來獲取 Connection 對象。當使用完 Conncetion 後,調用 Connection 的 close() 方法也不會真的關閉 Connection, 而是把 Connection "歸還" 給池。池就可以再利用這個 Connection 對象。

池參數(所有池參數都有默認值):

  • 初始大小
  • 最小空閒連接數
  • 增量
  • 最大空閒連接數
  • 最大連接數
  • 最大等待時間

四大連接參數(必須配置)

  • 連接池也是使用四大連接參數來完成創建連接對象。

實現的接口

  • 連接池必須實現: javax.sql.DataSource 接口。

連接池返回的連接結構

Example

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

import org.apache.commons.dbcp.BasicDataSource;
import org.junit.Test;

/**
 * dbcp 連接池
 * @author jack870131
 *
 */
public class Demo7 {
	@Test
	public void fun1() throws SQLException {
		/*
		 * 1. 創建連接對象
		 * 2. 配置四大參數
		 * 3. 配置池參數
		 * 4. 得到連接對象
		 */
		//四大參數
		BasicDataSource dataSource = new BasicDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql://localhost:3306/mysql");
		dataSource.setUsername("root");
		dataSource.setPassword("tyler0131");
		
		//池參數
		dataSource.setMaxActive(20);
		dataSource.setMinIdle(3);
		dataSource.setMaxWait(1000);
		
		//得到連接對象
		Connection con = dataSource.getConnection();
		System.out.println(con.getClass().getName());
		
		/**
		 * 連接池內部使用了四大參數創建了連接對象,即 mysql 驅動提供的 Connection
		 * 連接池使用 mysql 的連接對象進行了裝飾,只對 close() 方法進行了增強
		 * 裝飾之後的 Connection 的 close() 方法,用來把當前連接歸還給池
		 */
		con.close(); //把連接歸還給池
	}
}