美文网首页
连接与连接池

连接与连接池

作者: matthewfly | 来源:发表于2019-11-13 10:34 被阅读0次
    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()时会关闭数据库物理连接。

    相关文章

      网友评论

          本文标题:连接与连接池

          本文链接:https://www.haomeiwen.com/subject/zvfhictx.html