第一章 連接池
1.1. 遇到的問題-引出連接池
|
1.2. 連接池思想
|
1.3. 連接池的概述
| 在Java中,連接池使用javax.sql.DataSource接口來表示連接池.
注意:DataSource僅僅只是一個接口,由各大服務器廠商來實現(Tomcat.JBoss). 常用的DataSource的實現: DBCP: Spring推薦的 C3P0: Hibernate推薦的 Druid : (德魯伊)阿里巴巴開源的,性能最好,速度最快 DataSource(數據源)和連接池(Connection Pool)是同一個.
|
1.4. 使用連接池和不使用連接池的區別在哪里
| 從代碼上: 不使用連接池: Conenction對象由DriverManager獲取. Connection conn = DriverManager.getConnection(url,username,password);
使用連接池: 如何創建DataSource對象,如何在DataSource中設置url,賬號,密碼. Connection conn = DataSource對象.getConnection(); -------------------------------------------------------------------- 使用連接池的時候: 釋放資源: Connection對象.close(): 是把Connection放回給連接池,而不是和數據庫斷開. |
1.5. Druid連接池的使用
1.5.1. 准備druid 連接池jar包到項目

| package cn.yq.jdbc.test;
import static org.junit.Assert.*;
import java.io.InputStream; import java.io.Reader; import java.sql.Connection; import java.util.Properties;
import javax.sql.DataSource;
import org.junit.Test;
import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; import com.alibaba.druid.pool.DruidPooledConnection;
public class DataSourceTest { // 直接創建連接池對象 @Test public void testName() throws Exception { // 1.創建連接池對象 DruidDataSource ds = new DruidDataSource(); // 2.設置連接數據庫的賬號密碼 ds.setDriverClassName("com.mysql.jdbc.Driver"); ds.setUrl("jdbc:mysql://localhost:3306/jdbcdemo"); ds.setUsername("root"); ds.setPassword("root"); ds.setMaxActive(10);// 最大連接數 // 3.獲取連接對象 Connection conn = ds.getConnection(); System.out.println(conn); }
// 使用工廠對象創建連接池對象,工廠對象的好處,不需要直接設置賬號密碼等等,只需要將 // 連接數據庫的賬號密碼等等以指定的 key的名稱配置到 xxx.properties文件中即可,工廠對象底層自動讀取 @Test public void testDataSourceByFactory() throws Exception {
// 1.獲取類加載器用於加載clsspath下面的 配置文件 ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); // 2.讀取druid.properties配置文件 InputStream inputStream = classLoader.getResourceAsStream("druid.properties"); // 3.創建Properties對象,並讀取配置文件對應的輸入流 Properties p = new Properties(); p.load(inputStream);
// 4.創建連接池對象 DataSource ds = DruidDataSourceFactory.createDataSource(p); // 5.獲取連接對象 Connection conn = ds.getConnection(); System.out.println(conn); } }
|
|
1.5.2. druid.propperties
|
1.5.3. 使用Druid抽取的工具類
|
