-
driver
java.sql.Driver定义了创建连接的基础接口,数据库驱动都必须实现该接口。在Driver的实现类中定义了静态方法,该方法中加载了Driver实例到DriverManager中:
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
-
Connection
通过Driver的connect方法可以创建Connect对象。Connect对象提供了描述数据库详情的对象MetaData、创建执行sql语句的Statement等接口,以及设置数据库操作的自动提交等参数。
获取连接对象:
Connection connect(String url, java.util.Properties info)
throws SQLException;
获取MetaData对象:
DatabaseMetaData getMetaData() throws SQLException;
- ** PooledConnection**
PooledConnection代理了Connection的实现,用于连接池管理中回收再利用连接:
public MysqlPooledConnection(com.mysql.cj.jdbc.JdbcConnection connection) {
this.logicalHandle = null;
this.physicalConn = connection;
this.connectionEventListeners = new HashMap<>();
this.exceptionInterceptor = this.physicalConn.getExceptionInterceptor();
}
-
ConnectionPoolDataSource
PooledConnection工厂接口,用于获取连接池中的PooledConnection连接:
PooledConnection getPooledConnection() throws SQLException;
PooledConnection getPooledConnection(String user, String password)
throws SQLException;
当一次数据库操作完成后调用Connection.close()时,实际是发出了close事件,连接库收到close事件将Connection回收再利用,而不是真正关闭。调用PooledConnection.close()时会关闭数据库物理连接。
网友评论