JDBC-Connection接口

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

1. 获取Connection对象的方式
  • 通过JDBC API 中提供的DriverManger 类获取。
  • 通过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