查看jdbc源碼記錄

這是最近看源碼的一次簡單記錄,不對的地方多多包涵,其中的東西想到哪就寫到哪,可能比較亂

數據庫是什麼:不去管數據庫的語言,我簡單的把數據庫理解爲另外一臺專門存放數據的服務器,怎麼存儲數據的我們不管,但是它對外肯定暴露了一些接口的,來提供給其他服務器連接它並查詢它的數據。

jdbc是什麼:jdbc是java2ee的一套規範,也就是一套接口,jdk的rt.jar包下,路徑java.sql.* 下的相關接口,它定義了使用java怎麼去連接數據庫的步驟,但是隻給出了步驟的名稱,沒有具體實現,具體的實現要根據實現了這套接口的數據庫驅動程序來定義。

數據庫驅動是什麼:是個實現了java的jdbc接口的程序代碼,它再內部會去創建socket連接到相應的數據庫服務器上,然後能夠自己來維護相關的數據和優化。

下面是簡單的jdbc連接查詢數據庫的過程,整個源碼的流程就是更具這個過程來查看的。

1、Class.forName("java.mysql.jdbc.cj.Driver");

Class.forName: 這個方法後跟的是一個全類名,執行這個方法,會根據類加載器的幾個路徑下去找這個類目的類,把找到的類加載的內存中,加載的過程默認會對類進行初始化,也就是會執行類的靜態代碼塊。

這樣就創建了一個mysql驅動的Driver類,並把這個類註冊到DriverManager對象的registeredDrivers屬性上,當調用

connection.getConnection()的時候,其實就是調用的驅動程序的連接方法。

  數據庫連接的本質其實就是客戶端維持了一個和遠程MySQL服務器的一個TCP長連接,並且在此連接上維護了一些信息。

具體的代碼邏輯跟着追就能追到。

preparedStatement:mysql 要執行一條語句,肯定是需要再一定的語義下的,而這個PreparedSatement就是再java層面去維護這樣一個執行環境的,當PreparedStatement環境創建好了,執行executeQuery(),就可以實現對數據庫的查詢了。

再簡歷connection的時候,會發送tcp的三次握手。然後還有發送用戶名密碼校驗信息,然後還有發送是否預編譯的信息等等,然後才能查詢出數據。

後期繼續補充

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章