连接与连接池

2019-11-13  本文已影响0人  matthewfly
  1. 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!");
        }
    }
  1. Connection
    通过Driver的connect方法可以创建Connect对象。Connect对象提供了描述数据库详情的对象MetaData、创建执行sql语句的Statement等接口,以及设置数据库操作的自动提交等参数。
    获取连接对象:
Connection connect(String url, java.util.Properties info)
        throws SQLException;

获取MetaData对象:

DatabaseMetaData getMetaData() throws SQLException;
  1. ** 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();
    }
  1. ConnectionPoolDataSource
    PooledConnection工厂接口,用于获取连接池中的PooledConnection连接:
PooledConnection getPooledConnection() throws SQLException;
PooledConnection getPooledConnection(String user, String password)
    throws SQLException;

当一次数据库操作完成后调用Connection.close()时,实际是发出了close事件,连接库收到close事件将Connection回收再利用,而不是真正关闭。调用PooledConnection.close()时会关闭数据库物理连接。

上一篇 下一篇

猜你喜欢

热点阅读