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 核心接口(二) 驱动管理