摘要:還沒接觸源碼的時候,對的執行過程一頭霧水,不知道他是如何執行操作的。它在注冊之前先檢查是否已經注冊,存在的話拋出異常。反之,使用類將驅動注冊。文件內容是實現類的包名到類名。源碼具體分析,在接下來的學習中將持續更新。
還沒接觸源碼的時候,對jdbc的執行過程一頭霧水,不知道他是如何執行crud操作的。但是,我在使用的時候發現Class.forNmae(Driver).這個代碼。這時候我猜想它是使用反射機制。查看源碼果然是這樣。Driver類通過靜態代碼塊在Driver類被加載進內存的時候執行register()方法,將驅動進行注冊。它在注冊之前先檢查是否已經注冊,存在的話拋出異常。反之,使用DriverManager類將驅動注冊。
PgConnection使用通過DriverManger.getConnection()方法獲得,這其實時調用PGConnection的構造方法進行初始化,然后調用Driver類的connect()方法返回實例。
同理,PgStatement也是在createPgStatemnt方法中對PgStatement實例進行初始化。具體圖片不在展示,它們都調用System.getDefaultProperties()方法獲取連接參數,設置具體的執行過程。
jdbc中采用javaSPI機制,也就是它們給予java.sql包中的接口執行具體實現,所謂spi機制我的理解就是聲明一系列接口,或者說制定好標準,然后由具體類去實現。我猜jdbc的其它數據庫驅動應該也是這種模式。在resource的meta-info下有個service文件夾,里面建立接口的文件,名字是包名到接口名稱。文件內容是實現類的包名到類名。然后,通過serviceloader類進行加載,加載后的類進行打印得到每一個實現類。
源碼具體分析,在接下來的學習中將持續更新。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71149.html
摘要:本文為有二次開發需求的同學準備,可以修改源碼后編譯運行。具體操作即可在端口啟動前端服務。 本文為有thingsboard二次開發需求的同學準備,可以修改源碼后編譯運行。 準備工作 一臺4Gb內存以上的服務器(官方推薦8Gb以上,但實測以下配置即可正常運行) showImg(https://segmentfault.com/img/bVbu3eN?w=328&h=86); Centos7...
摘要:本文為有二次開發需求的同學準備,可以修改源碼后編譯運行。具體操作即可在端口啟動前端服務。 本文為有thingsboard二次開發需求的同學準備,可以修改源碼后編譯運行。 準備工作 一臺4Gb內存以上的服務器(官方推薦8Gb以上,但實測以下配置即可正常運行) showImg(https://segmentfault.com/img/bVbu3eN?w=328&h=86); Centos7...
摘要:本文主要介紹如何連接到數據庫。創建并配置數據庫創建與連接的數據庫用戶登錄角色例如。或通過命令行確保該用戶擁有連接數據庫以及創建和編輯表的權限。測試連接并保存。注意元素必須指定數據庫類型。文件示例啟動現在連接到數據庫就配置好了。 本文主要介紹如何連接JIRA到PostgreSQL數據庫。 首先 檢查是否支持你的PostgreSQL版本。請參見支持的平臺。 如果是轉移JIRA到另一臺服務...
閱讀 3466·2019-08-30 13:15
閱讀 1403·2019-08-29 18:34
閱讀 829·2019-08-29 15:18
閱讀 3488·2019-08-29 11:21
閱讀 3252·2019-08-29 10:55
閱讀 3705·2019-08-26 10:36
閱讀 1874·2019-08-23 18:37
閱讀 1827·2019-08-23 16:57