用池來管理connection,這可以重複使用connection。有了池,所以我們就不用自己來建立connection,而是通過池來獲取connection物件。當使用完connection後,呼叫connection的close()方法也不會真的關閉connection,而是把connection「歸還」給池。池就可以再利用這個connection物件了。
下面介紹兩種連線池:
public void fun1() throws sqlexception
#基本配置
driverclassname=com.mysql.jdbc.driver
url=jdbc:mysql://localhost:3306/mydb1
username=root
password=123
#初始化池大小,即一開始池中就會有10個連線物件
預設值為0
initialsize=0
#最大連線數,如果設定maxactive=50時,池中最多可以有50個連線,當然這50個連線中包含被使用的和沒被使用的(空閒)
#你是乙個包工頭,你一共有50個工人,但這50個工人有的當前正在工作,有的正在空閒
#預設值為8,如果設定為非正數,表示沒有限制!即無限大
maxactive=8
#最大空閒連線
#當設定maxidle=30時,你是包工頭,你允許最多有20個工人空閒,如果現在有30個空閒工人,那麼要開除10個
#預設值為8,如果設定為負數,表示沒有限制!即無限大
maxidle=8
#最小空閒連線
#如果設定minidel=5時,如果你的工人只有3個空閒,那麼你需要再去招2個回來,保證有5個空閒工人
#預設值為0
minidle=0
#最大等待時間
#當設定maxwait=5000時,現在你的工作都出去工作了,又來了乙個工作,需要乙個工人。
#這時就要等待有工人回來,如果等待5000毫秒還沒回來,那就丟擲異常
#沒有工人的原因:最多工人數為50,已經有50個工人了,不能再招了,但50人都出去工作了。
#預設值為-1,表示無限期等待,不會丟擲異常。
maxwait=-1
#連線屬性
#就是原來放在url後面的引數,可以使用connectionproperties來指定
#如果已經在url後面指定了,那麼就不用在這裡指定了。
#useserverprepstmts=true,mysql開啟預編譯功能
#cacheprepstmts=true,mysql開啟快取preparedstatement功能,
#prepstmtcachesize=50,快取preparedstatement的上限
#prepstmtcachesqllimit=300,當sql模板長度大於300時,就不再快取它
connectionproperties=useunicode=true;characterencoding=utf8;useserverprepstmts=true;cacheprepstmts=true;prepstmtcachesize=50;prepstmtcachesqllimit=300
#連線的預設提交方式
#預設值為true
defaultautocommit=true
#連線是否為唯讀連線
#connection有一對方法:setreadonly(boolean)和isreadonly()
#如果是唯讀連線,那麼你只能用這個連線來做查詢
#指定連線為唯讀是為了優化!這個優化與併發事務相關!
#如果兩個併發事務,對同一行記錄做增、刪、改操作,是不是一定要隔離它們啊?
#如果兩個併發事務,對同一行記錄只做查詢操作,那麼是不是就不用隔離它們了?
#如果沒有指定這個屬性值,那麼是否為唯讀連線,這就由驅動自己來決定了。即connection的實現類自己來決定!
defaultreadonly=false
#指定事務的事務隔離級別
#可選值:none,read_uncommitted, read_committed, repeatable_read, serializable
#如果沒有指定,那麼由驅動中的connection實現類自己來決定
defaulttransactionisolation=repeatable_read
public void fun1() throws propertyvetoexception, sqlexception
c3p0也可以指定配置檔案,而且配置檔案可以是properties,也可騍xml的。當然xml的高階一些了。但是c3p0的配置檔名必須為c3p0-config.xml,並且必須放在類路徑下。
<?xml version="1.0" encoding="utf-8"?>
[預設配置]
jdbc:mysql://localhost:3306/mydb1
com.mysql.jdbc.driver
root
1233102
10 [命名配置]
jdbc:mysql://localhost:3306/mydb1
com.mysql.jdbc.driver
root
1233102
10
c3p0的配置檔案中可以配置多個連線資訊,可以給每個配置起個名字,這樣可以方便的通過配置名稱來切換配置資訊。上面檔案中預設配置為mysql的配置,名為oracle-config的配置也是mysql的配置,呵呵。
public void fun2() throws propertyvetoexception, sqlexception
public void fun2() throws propertyvetoexception, sqlexception
資料庫連線池 Redis連線池
基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...
資料庫連線池
實現資料連線池,讓系統有更高有執行效率 using system using system.data using system.data.sqlclient using system.collections using system.threading public class dataaccess...
資料庫連線池
資料庫連線池概述 資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。資料庫連線池負責分配 管理和釋放資料庫連線,它允許應用程式重複使用乙個現有...