連接池DBCP的簡單使用

DBUtil工具類的設計

  1. 私有化構造方法,防止被new(很重要)

  2. 暴露一些public的方法給外界調用(很重要)

    有這麼兩步之後,工具類基本就完成了

·爲什麼要使用連接池?

在應用中,與數據建立連接,操作數據庫,關閉連接。這是一件很耗費資源的。爲了合理的使用資源,誕生了連接池這個東西

1.什麼是連接池

連接池,顧名思義 存放連接的池子。其作用就是連接池與數據庫建立長久的連接,當我們需要操作數據庫的時候,不再是去主動建立連接,而是去連接池中獲取鏈接,操作完成後,釋放當前連接,資源回到連接池中,資源再利用!如此的效率提升了,但是問題來了

2.連接池中可以存放多少連接?當前連接被使用完畢後該怎麼辦?

連接池中的連接在第一次和數據庫連接的時候已經申請了一些數量的連接。當前連接超過最大連接數時,連接池可以再一次向數據申請連接,此操作在配置文件中配置即可

連接池配置文件
dhcp.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/shopping
username=
password=

#<!-- 初始化連接 -->
dataSource.initialSize=10

#<!-- 最大空閒連接 -->
dataSource.maxIdle=20

#<!-- 最小空閒連接 -->
dataSource.minIdle=5

#最大連接數量
dataSource.maxActive=50

#是否在自動回收超時連接的時候打印連接的超時錯誤
dataSource.logAbandoned=true

#是否自動回收超時連接
dataSource.removeAbandoned=true

#超時時間(以秒數爲單位)
dataSource.removeAbandonedTimeout=180

#<!-- 超時等待時間以毫秒爲單位 6000毫秒/1000等於60秒 -->
dataSource.maxWait=1000

工具類代碼
DBUtil.java
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import com.store.shopping.exception.DBException;
public class DBUtil {
private static DataSource dataSource;

//私有化構造方法
private DBUtil() {
}
static {
/**
JDBC操作數據庫:
口訣(思路): 賈璉欲執事.
步驟:
    1.加載註冊驅動.
    2.獲取連接對象:Connection.
    3.獲取語句對象.
    4.執行SQL語句.
    5.釋放資源.
*/
// 讀取資源文件
try {
Properties properties = new Properties();
InputStream inputStream = Thread.currentThread()
.getContextClassLoader().getResourceAsStream("dhcp.properties");
properties.load(inputStream);//加載資源
//使用工廠生產datasource
dataSource = BasicDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
throw new DBException("文件沒找到:dhcp.properties");
}
}
        //暴露給外界調用的方法
public static DataSource getDataSource () {
return dataSource ;
}

測試代碼

@Test
public void testConnection() throws Exception {
System.out.println(DBUtil.getDataSource().getConnection());
}

測試結果

jdbc:mysql://localhost:3306/shopping, UserName=sa@localhost, MySQL Connector Java


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