資料庫連線有兩種方式:
1 :直連資料庫方式
當呼叫datasource.getconnection()時,其實它呼叫的是drivermanager.getconnection(url, user, password)來獲取乙個connection,connection使用完後被close,斷開與資料庫的連線,我們稱這總方式是直連資料庫,因為每次都需要重新建立與資料庫之間的連線,而並沒有把之前的connection保留供下次使用.
2:池化連線方式
1.可以說這種方式就是使用了連線池技術.datasource內部封裝了乙個連線池,當你獲取datasource的時候,它已經敲敲的與資料庫建立了多個connection,並將這些connection放入了連線池,此時呼叫datasource.getconnection()它從連線池裡取乙個connection返回,connection使用完後被close,但這個close並不是真正的與資料庫斷開連線,而是告訴連線池"我"已經被使用完,"你"可以把我分配給其它"人"使用了.就這樣連線池裡的connection被迴圈利用,避免了每次獲取connection時重新去連線資料庫.
對datasource的兩種實現方式已經介紹完畢,現在知道datasource與連線池之間的是關係而不是區別了吧,因為datasource與連線池根本就不是同一型別的東西,只有同一型別的東西才存在區別,例如:oracle與db2都是資料庫,它們才存在區別.
datasource與連線池的關係是:datasource利用連線池快取connection,以達到系統效率的提公升,資源的重複利用.
而連線池它可以單獨存在,不需要依靠datasource來獲取連線,你可以直接呼叫連線池提供的方法來獲取連線.
目前大多數應用伺服器都支援池化連線方式的datasource.
常用的連線池有c3p0,dbcp,proxool...
一般場景:jndi-> datasource->連線池(c3p0,dbcp,proxool等)->drivermanager->connection
資料來源與連線池
資料來源 datasource 即資料 呼叫datasource.getconnection 即可獲取乙個連線,而無需關心連到哪個資料庫,使用者名稱 密碼是什麼.這比drivermanager.getconnection url,user,password 要先進多了.我們就通過這個datasour...
資料來源 連線池
資料來源 datasource?連線池connection pool 資料來源與連線池沒有必然聯絡 發現ds與cp的概念有些不清楚 資料來源一般與jndi在一起使用,jndi遮蔽了db的細節資訊,使用jndi獲取資料連線可以不用關心db的具體資訊 使用jndi需要配置資料來源 reference 使...
資料來源(連線池)
最好的連線池是druid,可充當連線池 資料庫訪問監視器 獲取sql執行日誌 手動建立資料來源步驟 基於c3p0 combopooleddatasource datasource newcombopooleddatasource datasource.setdriverclass com.mysql...