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