java jdbc驱动放在那里_JDBC【2】-- JDBC的工作原理以及简单封装

本文介绍了JDBC的工作原理,包括驱动加载的过程和1.6之后的变化。详细讲解了加载驱动的必要性,类加载知识,以及JDK 1.6后自动加载驱动的机制。接着探讨了驱动加载完成后如何获取数据库连接,并简单封装了数据库连接工具,提到了连接池技术的重要性。
摘要由CSDN通过智能技术生成

1. 工作原理

一般我们主要的JDBC处理流程如下:

graph TD
A[注册一个Driver] -->B(建立数据库连接)
B --> C(创建一个Statement)
C-->D(执行SQL语句,获取结果)
D-->F(关闭JDBC对象)

1.1 加载驱动

首先声明:这个阶段在1.6之后就不需要手动执行了,也就是这个代码不需要了!!!分析它有利于理解流程。

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

上面代码发生在注册Driver阶段,指的是让JVN将com.mysql.jdbc.Driver这个类加载入内存中,最重要的是将mysql驱动注册到DriverManager中去

此处加载Driver的时候,加载的是java.mysql.jdbc包下的,这其实是一种向后兼容的做法,实际上代码都是写在了com.mysql.cj.jdbc下,所以,mysql的连接包使用了继承的方式,com.mysql.jdbc.Driver只是对外的一个兼容类,其父类是com.mysql.cj.jdbc.Driver,真正的的mysql Driver驱动。

加载Driver的目的就是加载它的父类:

public class Driver extends com.mysql.cj.jdbc.Driver {
    public Driver() throws SQLException {
        super();
    }
}

我们打开com.mysql.cj.jdbc.Driver,可以发现,里面有一个构造空方法,这也是调用Class.forName().newInstance()所需要的,这个类继承了NonRegisteringDriver,实现了java.mysql.Driver。 里面有一个空无参构造方法,为反射调用newInstance()准备的,另外就是静态代码块,静态代码块主要的功能是通过DriverManager注册自己(Driver,也就是驱动),这里很重要的一点,就是Driver是java.sql.Driver(这是jdk的包!!!)的实现。

我们引入的驱动本质上是JDK中的Driver的实现类,为啥?这就是标准,约束,不这样干,不合规矩。
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    static {
        try {
            // 调用DriverManager 注册自己(Driver)
            java.sql.DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
            throw new RuntimeException("Can't register driver!");
        }
    }
    public Driver() throws SQLException {
        // Class.forName().newInstance() 所需要的
    }
}

DriverManager里面基本全是static方法,也就是专门管理各种驱动的,registerDriver()方法如同其名字,就是为了注册驱动,注册到哪里呢? 看下面的代码,可以知道,driverInfo(驱动相关信息)会被添加到registeredDrivers里面去。registeredDrivers是DriverManager的static属性,里面存放着注册的驱动信息。如果这

Day1–JDBC概述+JDBC完成CRUD+DAO设计 1.JDBC概述 1.1 什么是持久化(persistence): 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。 ​ 保存数据: ​ 内存中: 掉电之后,数据就没了. ​ 磁盘中: 掉电之后,数据依然存在. 大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。 持久化的主要应用是将内存中的数据存储在 关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。 JPA:JavaEE的规范,Java persistence api: Java的持久化API. Hibernate实现了该规范.(xml/注解) -------------------------------------------------------------------------------------------------------------------- 在Java中,数据库存取技术 只能通过JDBC 访问数据库: JDBC访问数据库的形式主要有两种: ​ 1).直接使用JDBC的API去访问数据库服务器(MySQL/Oracle). ​ 2).间接地使用JDBC的API去访问数据库服务器. ​ 第三方O/R Mapping工具,如Hibernate, MyBatis等.(底层依然是JDBC) ​ JDBCjava访问数据库的基石,其他技术都是对jdbc封装. 1.2 JDBC(Java DataBase Connectivity): 是一种用于执行SQL语句的Java API(接口,类,方法),可以为多种关系数据库提供统一访问, 它由一组用Java语言编写的类和接口组成。 JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序. ​ JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。 JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统, 这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。 ​ 总结: JDBC本身是java连接数据库的一个标准,是进行数据库连接的抽象层,由java编写的一组类和接口组成,接口的实现由各个数据库厂商来完成. --------------------- 作者:故事我忘了i 来源:CSDN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值