經過javaAPI中javax.sql.DataSource接口註釋瞭解。java
以下圖:spring
翻譯:sql
DataSource對象表明一個鏈接到物理數據源的工廠。在尋找DriverManager的替代方案時,發現DataSource是替代DriverManager得到鏈接的最好選擇。實現DataSource接口的對象一般會註冊到基於JNDI的命名服務當中。數據庫
瞭解JNDI請跳轉至https://blog.csdn.net/wn084/article/details/80729230
服務器
翻譯:分佈式
DataSource接口由驅動提供商實現。有3種類型的實現:工具
《1》基本實現:提供一個標準java.sql.Connection對象ui
《2》鏈接池實現:提供一個java.sql.Connection對象,這個Connection對象自動被放到鏈接池中。此實現與中間層鏈接池管理器一塊兒工做。spa
《3》分佈式事務實現:提供一個java.sql.Connection對象,該對象可用於分佈式事務,而且幾乎老是參與鏈接池。此實現與中間層事務管理器一塊兒工做,而且幾乎老是與鏈接池管理器一塊兒工做。.net
總結:
實現了DataSource接口的數據源有DBCP、C3P0、Druid、Proxool。
spring項目推薦使用DBCP;Hibernate 推薦使用c3p0和proxool。
每一個數據源的特色介紹請跳轉至https://blog.csdn.net/weixin_37377718/article/details/69666627###
翻譯:
DataSource對象具備可修改的屬性必要時。例如,若是將數據源移動到其餘服務器,則能夠更改服務器的屬性。這樣作的好處是,由於能夠更改數據源的屬性,因此訪問該數據源的任何代碼都不須要更改。
翻譯:
經過DataSource對象訪問的驅動程序不會向DriverManager註冊自身。更確切地說,是DataSource經過查找操做檢索對象而後用於建立Connection對象。對於基本實現,經過DataSource對象得到的鏈接與經過DriverManager工具得到的鏈接相同。
實現DataSource接口時必須建立一個無參構造器。
DataSource接口只有兩個方法:getConnection()與getConnection(String userName,String userPassword)
javax.sql.DataSource的功能就是獲取鏈接。
該類位於java.sql包。
下面經過源碼註釋瞭解一下DriverManager。
翻譯:
DriverManager管理一組jdbc驅動程序的基本服務。注意:javax.sql.DataSource是新的JDBC2.0的API,提供了鏈接到數據源的其餘方式。推薦使用DataSource鏈接到數據源。
總結:
DriverManager是比較早的用於獲取數據庫鏈接的類,而DataSource是用於替代DriverManager的。
主要方法就是獲取鏈接、註冊驅動(不經常使用)。
該類位於java.sql包。
翻譯:
Connection表明鏈接到了一個特定的數據庫。經過Connection對象能夠執行SQL語句並從數據庫得到執行結果。