連接池詳解,c3p0與dbcp的區別!

連接池:

    連接池是創建和管理一個連接的緩衝池的技術,這些連接準備好被任何需要它們的線程使用。這項技術能明顯提高對數據庫操作的性能。

  連接池的好處:

(1)對於大多數應用程序,當它們正在處理事務時,僅需要能夠訪問JDBC連接的 1 個線程。當不處理事務時,這個連接就會閒置(造成資源的浪費)。相反,連接池允許閒置的連接被其它需要的線程使用。

(2)當一個線程需要用 JDBC 對一個 數據庫操作時,它從池中請求一個連接。當這個線程使用完了這個連接,將它返回到連接池中(連接池會自動收回連接,當然我們也可以在用完以後釋放),這樣這就可以被其它想使用它的線程使用,這樣不會照成內存的浪費。

(3)當連接被從池中調用出來,那麼這個連接將被這個線程專有地使用。

  連接池主要的優點有

   減少連接創建時間及資源的使用 :因爲連接是循環使用的,所以就少了創建連接所需要的時間,更重要的是不會在線程每一次調用JDBC的時候都去創建一個新的連接,造成資源浪費。

   ②簡化的編程模式:當使用連接池時,每一個單獨的線程在使用其中的連接時,就能夠像創建了一個自己的 JDBC 連接一樣操作,允許用戶直接使用JDBC編程技術。

    注意:每個連到數據庫的連接在客戶端和服務器端都有花銷(內存,CPU,上下文切換等等)。每個連接均會對應用程序和 數據庫服務器的可用資源帶來一定的限制。不管這些連接是否在做有用的工作,仍將使用這些資源中的相當一部分。

    連接池能夠使性能最大化,同時還能將資源利用控制在一定的水平之下,如果超過該水平,應用程序將崩潰而不僅僅是變慢。


連接池的運作原理:

      在實際應用開發中,特別是在WEB應用系統中,如果使用JDBC直接訪問數據庫中的數據,每一次數據訪問請求都必須經歷建立數據庫連接、打開數據庫、存取數據和關閉數據庫連接等步驟,而連接並打開數據庫是會消耗時間和資源的工作,如果頻繁發生這種數據庫操作,不僅系統的性能會急劇下降,甚至會導致系統崩潰。數據庫連接池技術是解決這個問題最常用的方法,連接池雖然不需要我們自己編程,但是,我們作爲一名使用者還是要深入瞭解這項技術的,瞭解以後會讓我們使用得心應手。

   數據庫連接池技術的思想非常簡單

       將數據庫連接作爲對象存儲在一個Vector數組中,一旦數據庫連接建立後,不同的數據庫訪問請求就可以共享這些連接,這樣,通過循環利用這些已經建立好的數據庫連接,就可以節省我們去不斷創建新連接的是啊進和資源,極大地節省系統資源和時間。

  數據庫連接池的主要操作如下:
(1)建立數據庫連接池對象(服務器啓動)。
(2)按照事先指定的參數創建初始數量的數據庫連接(即:空閒連接數),我們在安裝數據庫的時候就可以指定。
(3)對於一個數據庫訪問請求,直接從連接池中得到一個連接。如果數據庫連接池對象中沒有空閒的連接,且連接數沒有達到    最大(即:最大活躍連接數),創建一個新的數據庫連接。而如果連接數達到最大,就會再創建事先定好的連接數.
(4)對數據庫進行存取操作。
(5)關閉數據庫,釋放所有數據庫連接(此時的關閉數據庫連接,並非真正關閉,而是將其放入空閒隊列中。如實際空閒連接  數大於初始空閒連接數則釋放連接)。
(6)釋放數據庫連接池對象(服務器停止、維護期間,釋放數據庫連接池對象,並釋放所有連接)。
  

實現原理:

    百度百科有詳細的記載,我講述的話可能不是那麼的讓您看的懂(能力有限)。

c3p0:

  c3p0與dbcp的定義

    C3P0:C3P0是一個開源的JDBC連接池,它實現了數據源和JNDI綁定,支持JDBC3規範和JDBC2的標準擴展。目前使用它的開源項目有Hibernate,Spring等。
    dbcp:DBCP(DataBase Connection Pool)數據庫連接池,是java數據庫連接池的一種,由Apache開發,通過數據庫連接池,可以讓程序自動管理數據庫連接的釋放和斷開。

  c3p0與dbcp區別:

      dbcp沒有自動回收空閒連接的功能

      c3p0有自動回收空閒連接功能

      兩者主要是對數據連接的處理不同c3p0提供最大空閒時間,dbcp提供最大連接數。前者是如果連接時間超過最大連接時間,就會斷開當前連接。dbcp如果超過最大連接數,就會斷開所有連接。

    c3p0連接池的使用:

    C3P0是一個開源的JDBC連接池,它實現了數據源和JNDI綁定,支持JDBC3規範和JDBC2的標準擴展。
    1.導包  》c3p0-0.9.1.2.jar
    2.導入配置文件(不是必須的,但是在企業中一定使用配置文件)
        如果不使用配置文件,就要在代碼中設置數據庫參數4個
        項目分爲開發環境和運營環境,在開發時,開發人員接觸不到公司實際數據庫。數據是機密, 但是開發後也要更改數據庫,如果不需要更改代碼,那就是要使用配置文件
    3.導入自己寫的工具類(初始化連接池 獲得連接的方法)。
    4.在dao中使用的工具類獲得連接  或者連接池(有的工具類可以自動幫我們去創建連接)。
    比如dbutil工具類
    
    配置文件:
        java中的一些鍵值對的配置文件專門提供了這樣的類和文件名。
        Properties 文件的後綴名
        Properties讀取.properties文件的類
        讀取配置文件
        1.將配置文件變成流
        2.用java提供的Properties類去加載這個流
        3.調用properties對象的getProperties的方法 這個方法需要一個參數 鍵名返回的是一個值(字符串型)
   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章