JDBC生命週期?
1.加載驅動
java.sql.Drvier
2.獲取連接
java.sql.DrvierManager
3.獲取表達式
java.sql.Connection
4.執行sql
java.sql.Statement
5.獲取結果集
java.sql.ResultSet
6.關閉連接
java.sql.ResultSet
JDBC用到了什麼設計模式?
JDBC通過不斷地返回下一個生命週期類,將繼承關係轉化成了關聯關係,我認爲它是橋接模式的最佳實踐
返回生命週期類這個說法有點抽象,代碼是怎麼實現的呢?
第一步獲取連接時,返回了表達式:
隨後表達式返回java.sql.Statement 執行sql
執行sql後返回java.sql.ResultSet
如此層層嵌套
最後在java.sql.ResultSet 類中 關閉連接
一.驅動接口:java.sql.Drvier
* The interface that every driver class must implement.
* <P>The Java SQL framework allows for multiple database drivers.
* <P>When a Driver class is loaded, it should create an instance of
* itself and register it with the DriverManager. This means that a
* user can load and register a driver by calling:
* <p>
* {@code Class.forName("foo.bah.Driver")}
* <p>
官方定義驅動接口允許多個數據驅動,具體實現在java.sql.DrvierManager中定義
以SpringBoot爲例,我將嘗試尋找它是如何加載驅動:
第一步,找到java.sql.Drvier 按住Ctrl+鼠標左鍵,尋找什麼地方在使用
發現了一個熟悉的東西,Spring的自動配置文件,點進去一看,果然是這裏
Spring Boot 2.2.2 默認連接池爲dbcp2?嗯 看來是這樣。但是我沒有這個依賴呀,當然sourceType的類路徑就無法打開了。但是沒關係,我們全局搜索這個類在哪調用了:
一目瞭然的命名,點進去看看:
Actual DataSource configurations??實際的數據源配置 看來就是這個了
DataSourceConfiguration 類 有四個方法 對應四個數據源 :
Tomcat Pool DataSource
Hikari DataSource
DBCP DataSource
Generic DataSource
如何使用?
以dbcp爲例,導入maven依賴,在yml中配置即可,
JDBC 核心接口(二) 驅動管理