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


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 接口由驅動程序供應商實現。共有三種類型的實現

  1. 基本實現 - 生成標准的 Connection 對象

  2. 連接池實現 - 生成自動參與連接池的 Connection 對象。此實現與中間層連接池管理器一起使用。

  3. 分布式事務實現 - 生成一個 Connection 對象,該對象可用於分布式事務,大多數情況下總是參與連接池。此實現與中間層事務管理器一起使用,大多數情況下總是與連接池管理器一起使用。

DataSource 對象的屬性在必要時可以修改。例如,如果將數據源移動到另一個服務器,則可更改與服務器相關的屬性。其優點在於,由於可以更改數據源的屬性,所以任何訪問該數據源的代碼都無需更改。

通過 DataSource 對象訪問的驅動程序本身不會向 DriverManager 注冊。通過查找操作獲取 DataSource 對象,然后使用該對象創建 Connection 對象。使用基本的實現,通過 DataSource 對象獲取的連接與通過 DriverManager 設施獲取的連接相同。

 

參考:http://bbs.csdn.net/topics/300234840

擴展:四種連接數據庫的方法(DriverManager、DataSource子類、DBCP、c3p0)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM