⑴ java中資料庫連接池框架c3p0和dbcp的區別
C3P0是一個開源的JDBC連接池,它實現了數據源和JNDI綁定,支持JDBC3規范和JDBC2的標准擴展。目前使用它的開源項目有Hibernate,Spring等。
DBCP(DataBase connection pool),資料庫連接池。是 apache 上的一個 java 連接池項目,也是 tomcat 使用的連接池組件。
c3p0與dbcp區別:
dbcp沒有自動的去回收空閑連接的功能 c3p0有自動回收空閑連接功能
兩者主要是對數據連接的處理方式不同!C3P0提供最大空閑時間,DBCP提供最大連接數。
前者當連接超過最大空閑連接時間時,當前連接就會被斷掉。DBCP當連接數超過最大連接數時,所有連接都會被斷開。
⑵ 資料庫連接池的Java連接池
在Java中開源的資料庫連接池有以下幾種 :
1、C3P0:是一個開放源代碼的JDBC連接池,它在lib目錄中與Hibernate 一起發布,包括了實現jdbc3和jdbc2擴展規范說明的Connection 和Statement 池的DataSources 對象。
2、Proxool:是一個Java SQL Driver驅動程序,提供了對選擇的其它類型的驅動程序的連山中接池封裝。可以非常簡單的移植到現存的代碼中,完全可配置,快速、成熟、健壯。可以透明地為現存的JDBC驅動程序增加連接池功能。
3、Jakarta DBCP:DBCP是一個依賴-pool對象池機制的資料庫連接池。DBCP可以直接的在應用程序中使用。
4、:是一個簡單、輕量級的資料庫連接池。
5、DBPool:是一個高效、易配置的資料庫連接池。它除了支持連接池應有的功能之外,還包括了一個對象池,使用戶能夠開發一個滿足自己需派清求的資料庫連接池。
6、XAPool:是一個XA資料庫連接池。它實現了javax.sql.並提供了連接池工具。
7、Primrose:是一個Java開發的資料庫連接池。當前支持的容器包括Tomcat4&5、Resin3與JBoss3。它同樣也有一個獨立的版本,可以在應用程序中使用而不必運行在容器中。Primrose通過一個WEB介面來控制SQL處理的追蹤、配置,以及動態池管理。在重負荷的情況下可進行連接請求隊列處理。
8、SmartPool:是一個連接池組件,它模仿應用伺服器對象池的特性。SmartPool能塵唯前夠解決一些臨界問題如連接泄漏(connection leaks)、連接阻塞、打開的JDBC對象(如Statements、)等。SmartPool的特性包括:支持多個pool自動關閉相關聯的JDBC對象在所設定time-outs之後察覺連接泄漏追蹤連接使用情況強制啟用最近最少用到的連接把SmartPool「包裝」成現存的一個pool9、:是一個輕量級JDBC資料庫連接池。它只需要Java1.5(或更高)並且沒有依賴第三方包。
10、BoneCP:是一個快速、開源的資料庫連接池。幫用戶管理數據連接,讓應用程序能更快速地訪問資料庫。比C3P0/DBCP連接池速度快25倍。
11、Druid:Druid不僅是一個資料庫連接池,還包含一個ProxyDriver、一系列內置的JDBC組件庫、一個SQL Parser。
支持所有JDBC兼容的資料庫,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等。
Druid針對Oracle和MySql做了特別優化,比如:Oracle的PS Cache內存佔用優化MySql的ping檢測優化Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,這是一個手寫的高性能SQL Parser,支持Visitor模式,使得分析SQL的抽象語法樹很方便。
簡單SQL語句用時10微秒以內,復雜SQL用時30微秒。
通過Druid提供的SQL Parser可以在JDBC層攔截SQL做相應處理,比如說分庫分表、審計等。Druid防禦SQL注入攻擊的WallFilter,就是通過Druid的SQL Parser分析語義實現的