1. 程式人生 > >MyBatis源碼解析之數據源(含數據庫連接池簡析)

MyBatis源碼解析之數據源(含數據庫連接池簡析)

概述 myba 源碼 conn java 初始 對象狀態 lis 為什麽

一.概述:

常見的數據源組件都實現了javax.sql.DataSource接口;

MyBatis不但要能集成第三方的數據源組件,自身也提供了數據源的實現;

一般情況下,數據源的初始化過程參數較多,比較復雜;

二.設計模式:

技術分享圖片

為什麽要使用工廠模式

技術分享圖片

數據源模塊類圖 :

技術分享圖片

三.MyBatis源碼數據源實現

數據結構如下:

技術分享圖片

技術分享圖片

使用動態代理封裝了真正的數據庫連接對象,進行了方法增強:使用前檢查連接是否有效,關閉時對連接進行回收;

技術分享圖片

連接池配置文件配置的數據在這裏映射。

用於管理PooledConnection對象狀態的組件,通過兩個list分別 管理空閑狀態的連接資源和活躍狀態的連接資源;

算法流程圖:

獲取連接:

技術分享圖片

釋放連接:

技術分享圖片

從連接池獲取連接

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

釋放連接:

技術分享圖片

技術分享圖片

MyBatis源碼解析之數據源(含數據庫連接池簡析)