天天看點

java 連接配接池_Java連接配接資料庫技術的性能分析

Java連接配接資料庫技術的性能分析

一、 概述:

本文主要以Java連接配接資料庫的架構和連接配接池的技術為主線逐漸展開說明,用比對特點和案例相結合的方式分析各種技術的優劣。同時以項目開發為出發點對于各種技術的配置和代碼實作進行說明,讓讀者感受到項目開發的魅力。

将相關格式的檔案内容文本化的過程。另外針對于Excel檔案内容的結構化和對象化進行實際案例分析,給出更适應Spring架構配置的解決方案。

二、 Hibernate和MyBatis的特點比對:

java 連接配接池_Java連接配接資料庫技術的性能分析

特點比對

三、 資料連接配接池技術:

1、 常見的連接配接池技術:

a) DBCP;

b) Druid;

c) C3P0;

d) Tomcat-JDBC;

2、 功能對比:

java 連接配接池_Java連接配接資料庫技術的性能分析

功能對比

3、 測試結論:

a) 性能方面:

druid>tomcat-jdbc>dbcp>c3p0;

b) 功能方面:

druid功能最為全面,sql攔截等功能,統計資料較為全面,具有良好的擴充性;

c) 綜合性能和擴充性等方面:

可考慮使用druid;

d) 緩存方面:

可開啟prepareStatement緩存,對性能會有大概20%的提升;

e) 實際情況方面:

實際項目druid更常用,但也有使用dbcp的情況;

四、 商業中間件連接配接池:

1、 WebLogic的連接配接池:

此連接配接池的持續運作穩定性很強,在大并發量的壓力下性能也相當優秀,另外在一些異常情況下連接配接池裡的連接配接也能夠及時釋放。連接配接池監控一目了然,及時到位;

2、 WebSphere的連接配接池:

此連接配接池的持續運作穩定性相當強,在大并發量的壓力下性能也足夠優秀,另外在一些異常情況下連接配接池裡的連接配接能夠及時釋放,連接配接池監控配置有些複雜,但是配置好後各項名額一目了然并且有圖形顯示。簡單地說就是功能強大,使用複雜;

五、 項目中的具體細節處理:

1、 獲得資料庫連接配接屬性:

a) 通過檔案進行配置:

i. 必須與Java代碼分離,保證工程人員可自行修改;

ii. 應盡量避免修改相關配置檔案後需經重新開機伺服器才能生效的情況;

b) 通過中間件伺服器進行配置:

應盡量降低工程人員配置難度,并提供說明文檔或使用手冊;

2、 獲得資料庫連接配接執行個體:

a) 應盡量使用架構配置的方式;

b) 如需自行開發,應盡量使用工廠模式或單例模式,以保障執行個體不會被重複建立;

3、 封裝和執行SQL語句:

i. 應提供多種方式的執行方法,比如批處理、存儲過程與函數等等;

ii. 應提供增删改的批量處理方式(建議使用Batch模式,此模式主要使用代碼控制批次内的執行語句數量);

iii. 應盡量封裝自定義的動态SQL标簽,簡化SQL開發,提高代碼運作效率;

4、 提供分頁查詢方式:

a) 數組分頁;

b) SQL分頁:盡量避免使用此種分頁查詢方式;

c) 攔截器分頁;

d) RowBounds分頁;

5、 處理異常:

針對程式運作時異常和業務邏輯異常等情況應分别進行處理,同時釋放相關資源;

六、 各種技術的處理方式:

1、 JDBC:

a) 說明:

利用properties.properties配置檔案形式配置資料庫連接配接屬性,使用java.util.Properties讀入相關資訊;

b) 示例代碼:

java 連接配接池_Java連接配接資料庫技術的性能分析

JdbcFactory

2、 C3P0:

a) 說明:

利用com.mchange.v2.c3p0.ComboPooledDataSource獲得資料庫連接配接;

b) 示例代碼:

java 連接配接池_Java連接配接資料庫技術的性能分析

C3P0Factory

3、 DBCP:

a) 說明:

利用org.apache.commons.dbcp.BasicDataSourceFactory獲得資料庫連接配接;

b) 示例代碼:

java 連接配接池_Java連接配接資料庫技術的性能分析

DBCPFactory

4、 MyBatis:

a) 說明:

利用org.apache.ibatis.session.SqlSessionFactoryBuilder獲得資料庫連接配接;利用org.springframework.orm.ibatis.support.SqlMapClientDaoSupport執行SQL語句;

b) 示例代碼:

java 連接配接池_Java連接配接資料庫技術的性能分析

BaseDAO

5、 Hibernate:

a) 說明:

利用org.hibernate.SessionFactory獲得資料庫連接配接;

b) 示例代碼:

java 連接配接池_Java連接配接資料庫技術的性能分析

HibernateSessionFactory

七、 案例分析:

1、 設計說明:

考慮到支援多種連接配接池的技術使用場景,是以将公共邏輯提取到父類。

2、 類圖:

java 連接配接池_Java連接配接資料庫技術的性能分析

PowerDesigner類圖

3、 公共類:

java 連接配接池_Java連接配接資料庫技術的性能分析

CommonFactory

4、 Spring配置:

a) 公共配置:

java 連接配接池_Java連接配接資料庫技術的性能分析

Spring公共配置

b) C3P0配置:

java 連接配接池_Java連接配接資料庫技術的性能分析

C3P0配置

c) DBCP配置:

java 連接配接池_Java連接配接資料庫技術的性能分析

DBCP配置

d) druid配置:

java 連接配接池_Java連接配接資料庫技術的性能分析

Druid配置

e) iBatis配置:

java 連接配接池_Java連接配接資料庫技術的性能分析

iBatis配置

f) Hibernate配置:

java 連接配接池_Java連接配接資料庫技術的性能分析

Hibernate配置

5、 連接配接屬性配置:

a) JDBC連接配接屬性配置:

java 連接配接池_Java連接配接資料庫技術的性能分析

JDBC連接配接屬性配置

b) DBCP連接配接屬性配置:

java 連接配接池_Java連接配接資料庫技術的性能分析

DBCP連接配接屬性配置

繼續閱讀