Java數(shù)據(jù)庫連接池技術(shù)的入門教程
池(Pool)技術(shù)在一定程度上可以明顯優(yōu)化服務(wù)器應(yīng)用程序的性能,提高程序執(zhí)行效率和降低系統(tǒng)資源開銷。數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個;
數(shù)據(jù)庫連接池技術(shù)
基本概念:
數(shù)據(jù)庫連接池:其實就是一個容器(集合),存放數(shù)據(jù)庫連接的容器。 當(dāng)系統(tǒng)初始化好后,容器被創(chuàng)建,容器中會申請一些連接對象,當(dāng)用戶來訪問數(shù)據(jù)庫時,從容器中獲取連接對象,用戶訪問完之后,會將連接對象歸還給容器。
使用池化技術(shù)的好處:
1. 節(jié)約資源
2. 用戶訪問高效
3.提高程序性能和降低系統(tǒng)資源開銷
Java中定義的接口—DataSource接口提供激活框架與數(shù)據(jù)的任意集合的抽象。
常用方法:
獲取連接:getConnection()
歸還連接:Connection.close()。如果連接對象Connection是從連接池中獲取的,那么調(diào)用Connection.close()方法,則不會再關(guān)閉連接了。而是歸還連接
常用的數(shù)據(jù)庫連接池技術(shù)
C3P0
步驟:
1. 導(dǎo)入jar包 (兩個)
c3p0-0.9.5.2.jar、mchange-commons-java-0.2.12.jar ,
2. 定義配置文件:
名稱: c3p0.properties 或者 c3p0-config.xml
路徑:直接將文件放在src目錄下即可。
3. 創(chuàng)建核心對象 數(shù)據(jù)庫連接池對象 ComboPooledDataSource
4. 獲取連接: getConnection
代碼:
<c3p0-config> <!-- 使用默認(rèn)的配置讀取連接池對象 --> <default-config> <!-- 連接參數(shù) --> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/db4</property> <property name="user">root</property> <property name="password">root</property> <!-- 連接池參數(shù) --> <!--初始化申請的連接數(shù)量--> <property name="initialPoolSize">5</property> <!--最大的連接數(shù)量--> <property name="maxPoolSize">10</property> <!--超時時間--> <property name="checkoutTimeout">3000</property> </default-config> </c3p0-config>
public static void main(String[]args)throws SQLException{
//1.獲取數(shù)據(jù)庫連接池對象
DataSource ds=new ComboPooledDataSource();
//2.獲取連接對象
Connection conn=ds.getConnection();
//3.打印
System.out.println(conn);
//4.歸還資源
conn.close();
}
Druid:由阿里巴巴提供
步驟:
1. 導(dǎo)入jar包 druid-1.0.9.jar
2. 定義配置文件:
是properties形式的
可以叫任意名稱,可以放在任意目錄下
3. 加載配置文件。Properties
4. 獲取數(shù)據(jù)庫連接池對象:通過工廠來來獲取 DruidDataSourceFactory
5. 獲取連接:getConnection
代碼:
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql:///db3 username=root password=root # 初始化連接數(shù)量 initialSize=5 # 最大連接數(shù) maxActive=10 # 最大等待時間 maxWait=3000
public static void main(String[] args) throws Exception {
//1.導(dǎo)入jar包
//2.定義配置文件
//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();
System.out.println(conn);
}
總結(jié)
到此這篇關(guān)于Java數(shù)據(jù)庫連接池技術(shù)的文章就介紹到這了,更多相關(guān)Java數(shù)據(jù)庫連接池內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring mvc常用注解_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了spring mvc常用注解,詳細(xì)的介紹了@RequestMapping, @RequestParam, @ModelAttribute等等這樣類似的注解,有興趣的可以了解一下2017-08-08
java實現(xiàn)監(jiān)控rtsp流轉(zhuǎn)flv方法實例(前端播放,前后端代碼都有)
這篇文章主要給大家介紹了關(guān)于java實現(xiàn)監(jiān)控rtsp流轉(zhuǎn)flv的相關(guān)資料,文中介紹的是前端播放,前后端代碼都有,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
Spring websocket并發(fā)發(fā)送消息異常的解決
本文主要介紹了 Spring websocket并發(fā)發(fā)送消息異常的解決,當(dāng)多個線程同時嘗試通過 WebSocket 會話發(fā)送消息時,會拋出異常,下面就來解決一下,感興趣的可以了解一下2023-09-09
淺談web服務(wù)器項目中靜態(tài)請求和動態(tài)請求處理
這篇文章主要介紹了淺談web服務(wù)器項目中靜態(tài)請求和動態(tài)請求處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Java實現(xiàn)短信驗證碼和國際短信群發(fā)功能的示例
本篇文章主要介紹了Java實現(xiàn)短信驗證碼和國際短信群發(fā)功能的示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02
Spring細(xì)數(shù)兩種代理模式之靜態(tài)代理和動態(tài)代理概念及使用
代理是一種設(shè)計模式,提供了對目標(biāo)對象另外的訪問方式,即通過代理對象訪問目標(biāo)對象??梢圆恍薷哪繕?biāo)對象,對目標(biāo)對象功能進(jìn)行拓展。在我們學(xué)習(xí)Spring的時候就會發(fā)現(xiàn),AOP(面向切面編程)的底層就是代理2023-02-02

