Java--JDBC資料庫連接池
博客說明
文章所涉及的資料來自互聯網整理和個人總結,意在于個人學習和經驗匯總,如有什么地方侵權,請聯系本人洗掉,謝謝!
概念
其實就是一個容器(集合),存放資料庫連接的容器,
當系統初始化好后,容器被創建,容器中會申請一些連接物件,當用戶來訪問資料庫時,從容器中獲取連接物件,用戶訪問完之后,會將連接物件歸還給容器,
好處
節約資源
用戶訪問高效
實作
標準介面:DataSource javax.sql包下的
- 獲取連接:getConnection()
- 歸還連接:Connection.close(),如果連接物件Connection是從連接池中獲取的,那么呼叫Connection.close()方法,則不會再關閉連接了,而是歸還連接
一般我們不去實作它,有資料庫廠商來實作
C3P0
資料庫連接池技術
步驟:
-
匯入jar包 (兩個) c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar ,
- 不要忘記匯入資料庫驅動jar包
-
定義組態檔:
- 名稱: c3p0.properties 或者 c3p0-config.xml
- 路徑:直接將檔案放在src目錄下即可,
-
創建核心物件 資料庫連接池物件 ComboPooledDataSource
-
獲取連接: getConnection
代碼
//1.創建資料庫連接池物件
DataSource ds = new ComboPooledDataSource();
//2. 獲取連接物件
Connection conn = ds.getConnection();
Druid
資料庫連接池實作技術,由阿里巴巴提供的
步驟
- 匯入jar包 druid-1.0.9.jar
- 定義組態檔:
- 是properties形式的
- 可以叫任意名稱,可以放在任意目錄下
- 加載組態檔,Properties
- 獲取資料庫連接池物件:通過工廠來來獲取 DruidDataSourceFactory
- 獲取連接:getConnection
代碼
//3.加載組態檔
Properties pro = new Properties();
InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//4.獲取連接池物件
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
//5.獲取連接
Connection conn = ds.getConnection();
定義工具類
- 定義一個類 JDBCUtils
- 提供靜態代碼塊加載組態檔,初始化連接池物件
- 提供方法
- 獲取連接方法:通過資料庫連接池獲取連接
- 釋放資源
- 獲取連接池的方法
- 代碼
public class JDBCUtils {
//1.定義成員變數 DataSource
private static DataSource ds;
static {
try {
//1.加載組態檔
Properties pro = new Properties();
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
//2.獲取DataSource
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 獲取連接
*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/**
* 釋放資源
*/
public static void close(Statement stmt, Connection conn) {
close(null, stmt, conn);
}
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();//歸還連接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 獲取連接池方法
*/
public static DataSource getDataSource() {
return ds;
}
}
感謝
黑馬程式員
以及勤勞的自己
關注公眾號: 歸子莫,獲取更多的資料,還有更長的學習計劃
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/162004.html
標籤:Java
下一篇:Js--BOM詳解
