1. 程式人生 > >java中DriverManager跟DataSource獲取getConnection有什麼不同?

java中DriverManager跟DataSource獲取getConnection有什麼不同?

DriverManager是直接和資料庫地層連線

DataSource是用資料庫連線池進行封裝好獲得連線的,訪問量大的專案最好用連線池

拷貝於JDK 6.0 中文版.
--------------------------------------
public interface DataSource extends CommonDataSource, Wrapper
該工廠用於提供到此 DataSource 物件所表示的物理資料來源的連線。作為 DriverManager 工具的替代項,DataSource 物件是獲取連線的首選方法。實現 DataSource 介面的物件通常在基於 JavaTM Naming and Directory Interface (JNDI) API 的命名服務中註冊。 

DataSource 介面由驅動程式供應商實現。共有三種類型的實現: 

基本實現 - 生成標準的 Connection 物件 
連線池實現 - 生成自動參與連線池的 Connection 物件。此實現與中間層連線池管理器一起使用。 
分散式事務實現 - 生成一個 Connection 物件,該物件可用於分散式事務,大多數情況下總是參與連線池。此實現與中間層事務管理器一起使用,大多數情況下總是與連線池管理器一起使用。 
DataSource 物件的屬性在必要時可以修改。例如,如果將資料來源移動到另一個伺服器,則可更改與伺服器相關的屬性。其優點在於,由於可以更改資料來源的屬性,所以任何訪問該資料來源的程式碼都無需更改。 

通過 DataSource 物件訪問的驅動程式本身不會向 DriverManager 註冊。通過查詢操作獲取 DataSource 物件,然後使用該物件建立 Connection 物件。使用基本的實現,通過 DataSource 物件獲取的連線與通過 DriverManager 設施獲取的連線相同。 
----------------------------------------------
public class DriverManager extends Object
管理一組 JDBC 驅動程式的基本服務。
注:DataSource 介面是 JDBC 2.0 API 中的新增內容,它提供了連線到資料來源的另一種方法。使用 DataSource 物件是連線到資料來源的首選方法。 

作為初始化的一部分,DriverManager 類會嘗試載入在 "jdbc.drivers" 系統屬性中引用的驅動程式類。這允許使用者定製由他們的應用程式使用的 JDBC Driver。
在呼叫 getConnection 方法時,DriverManager 會試著從初始化時載入的那些驅動程式以及使用與當前 applet 或應用程式相同的類載入器顯式載入的那些驅動程式中查詢合適的驅動程式。