JDBC-Connection接口

一个Connection对象表示通过JDBC驱动与数据源建立的连接。使用JDBC API的应用程序可能需要维护多个Connection对象,一个Connection对象可能访问多个数据源,也可能访问单个数据源。

1. 获取Connection对象的方式
  1. 通过JDBC API 中提供的DriverManger 类获取。
  2. 通过DataSource接口的实现类获取。
2.驱动类型

开发过程中最常用的驱动类型 Native Protocol Driver。由数据库生产商提供,驱动程序把JDBC的调用转换为特定的网络通信协议。使用网络通信,驱动程序可以完全由JAVA编写,跨平台性良好,性能也好。(驱动类型的区分主要在于通讯协议、是否有中间层,其余不做介绍)

3.java.sql.Driver 接口

所有的JDBC驱动都必须实现Driver接口,并且在驱动的实现类中有一个静态的代码块,用于向DriverManager注册一个自己的实例。例如:mysql驱动实现

package com.mysql.jdbc;

import java.sql.DriverManager;
import java.sql.SQLException;

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    public Driver() throws SQLException {
    }

    static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}

当我们加载驱动实现类时,静态块就会被调用,向JDBCManager中注册一个驱动类的实现,这就是我们为什么在使用驱动时需要显示的加载驱动,例如:

Class.forName("com.mysql.jdbc.Driver");

当我们使用驱动获取数据库连接时,DriverManager会调用Driver接口提供的connect方法,具体的实现由驱动提供。连接成功后会返回Connection对象。

在JDBC 4.0 以上的版本对getConnection()方法做了增强,可以通过java的SPI 机制加载驱动。符合JDBC 4.0 以上版本的驱动会在jar存在META-INF/service/java.sql.Driver 文件,文件中指定了Driver接口的实现类。例如:mysql

com.mysql.jdbc.Driver
com.mysql.fabric.jdbc.FabricMySQLDriver

SPI(Service Provider Interface) 是JDK提供的一种服务提供发现机制。SPI是一种动态替换发现的机制。可以查阅JDK中的java.util.ServiceLoader 。

4. 关闭Connection对象

使用完connection对象之后,需要显式的关闭该对象。Connection接口中提供了close()方法用来关闭连接,还提供了isClosed()方法用来检测连接是否关闭;同时还提供了isValid()方法判断连接是否有效。

需要注意的是,isClosed()方法返回只能用来判断应用是否调用了close()方法,不能够用来判断连接是否有效。isValid()方法用来判断连接是否有效,当返回false时,除了close(),isClose(),isValid()方法外,调用其余方法均会报错。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容