1、datasource是與連接池獲取連接,而DriverManager是獲取與數據庫的連接!
DriverManager類的主要作用是管理注冊到DriverManager中的JDBC驅動程序,並根據需要使用JDBC驅動程序建立與數據服務器的網絡連接。但是建立與數據庫的連接是一項較耗資源的工作,頻繁的進行數據庫連接建立操作會產生較大的系統開銷,為了解決上述問題,可以采用數據庫連接池技術。
2、datasource內部封裝了 DriverManager的使用。。。
DataSource主要是為了方便配置使用。。。 作為OO概念上也需要有這個類和對象來表示數據的來源。。。
3、c3p0 是一個連接池 同樣常用還有DBCP 。。。其相關概念是JDBC中的Connection。。。
還有就是POSA第三卷中的 POOL這個模式概念。。。。
簡單的說就是為了復用Connection而出現的一個工具,作用是自動緩存連接資源。
底層實現都是一樣的,就是使用了池化概念,如對象池,線程池。
就是先把材料都准備好再開工,所有連接在服務啟動之初就初始化好了,用完之后不銷毀,等待下一次使用
有點像緩存技術。
4、 jdk api解釋
public interface DataSourceextends CommonDataSource, Wrapper
該工廠用於提供到此 DataSource
對象所表示的物理數據源的連接。作為 DriverManager
工具的替代項,DataSource
對象是獲取連接的首選方法。實現 DataSource
接口的對象通常在基於 JavaTM Naming and Directory Interface (JNDI) API 的命名服務中注冊。
DataSource
接口由驅動程序供應商實現。共有三種類型的實現:
-
基本實現 - 生成標准的
Connection
對象 -
連接池實現 - 生成自動參與連接池的
Connection
對象。此實現與中間層連接池管理器一起使用。 -
分布式事務實現 - 生成一個
Connection
對象,該對象可用於分布式事務,大多數情況下總是參與連接池。此實現與中間層事務管理器一起使用,大多數情況下總是與連接池管理器一起使用。
DataSource
對象的屬性在必要時可以修改。例如,如果將數據源移動到另一個服務器,則可更改與服務器相關的屬性。其優點在於,由於可以更改數據源的屬性,所以任何訪問該數據源的代碼都無需更改。
通過 DataSource
對象訪問的驅動程序本身不會向 DriverManager
注冊。通過查找操作獲取 DataSource
對象,然后使用該對象創建 Connection
對象。使用基本的實現,通過 DataSource
對象獲取的連接與通過 DriverManager
設施獲取的連接相同。
參考:http://bbs.csdn.net/topics/300234840
擴展:四種連接數據庫的方法(DriverManager、DataSource子類、DBCP、c3p0)