JDBC

JDBC简介

在说JDBC之前,必须先聊聊数据持久化。

持久化

把数据保存到可掉电式存储设备中以供之后使用。

大多数情况下,数据持久化意味着将内存中的数据保存到磁盘中加以“固化”。而持久化的实现过程大多通过各种关系数据库完成。当然,也可以存入磁盘文件或者XML数据文件(崔老师JavaWeb day14练习中,使用了XML充当“数据库”)。

图片来自尚硅谷JDBC

JDBC

数据库是实现持久化的一种途径,而JDBC则是通向数据库的桥梁。

通俗地讲,JDBC就是一组API(包括少量类),为访问不同数据库提供了统一的途径,为开发者屏蔽了一些细节问题。比如,我们都知道浏览器发送HTTP请求访问服务器,但其实请求底层仍是TCP协议。同样的,访问数据库底层也通过TCP协议。你知道怎么与数据库建立TCP连接吗?一部分科班读者可能对计算机网络非常熟悉,但是大部分像我这样的野生程序员可能压根没想过这个问题。所幸,这些具体的实现,各大数据库产商已经替我们做了。

驱动

JDBC是Java制定的接口,数据库产商依照该接口编写与自家数据库配套的实现类。比如MySQL、Oracle、SqlServer等都有自己的不同实现,这些实现类的集合既是我们笼统意义上的“驱动”。

面向接口编程

在代码中直接new具体的驱动类,会使程序高度耦合。比如,后期如果要切换数据库(虽然很少),就要临时调换驱动类,需要修改源码,不符合开闭原则。而面向接口编程,实际上就是一种“多态”。屏蔽具体的实现,只需调用接口方法,传入规定的参数即可得到预期的返回值。切换数据库驱动并不影响程序运行结果。

基本环境搭建

上面说过,JDBC只是一组接口,具体实现交给驱动。所以,要使用JDBC完成CRUD,必须先导入具体的数据库驱动。本次我们以MySQL为例,所以导入MySQL的数据库驱动。

pom.xml

       

       

            mysql

            mysql-connector-java

            5.1.46

       

       

       

            junit

            junit

            4.12

            compile

       

   

代码结构

DriverDemo

public class DriverDemo {

@Test

public void testDriver() throws SQLException {

//1. 创建一个 Driver 实现类的对象

Driver driver = new com.mysql.jdbc.Driver();

//2. 准备连接数据库的基本信息: url, user, password

String url = "jdbc:mysql://192.168.136.128:3306/test";

Properties info = new Properties();

info.put("user", "root");

info.put("password", "root");

//3. 调用 Driver 接口的 connect(url, info) 获取数据库连接

Connection connection = driver.connect(url, info);

System.out.println(connection);

}

}

运行结果

使用JDBC有三个大步骤:

连接数据库

执行SQL语句

获得结果

我们上面的代码,仅完成了第一步。

Driver

上面testDriver()方法中的第一句:

//1. 创建一个 Driver 实现类的对象

Driverdriver=newcom.mysql.jdbc.Driver();

这是一个典型的面向接口编程。

我们先看左边的Driver接口:

接口的方法并不多,我们在上面用到了其中的connect()方法

接着我们再来看看右边MySQL的Driver实现类:

怎么回事?!

只有一个静态代码块和无参构造。不对啊,我们明明在程序中调用了driver.connect(),怎么连connect方法都没了?!

仔细一看,原来MySQL的Driver类还继承了NonRegisteringDriver,它实现了Driver接口的全部方法:

connect()的核心代码就一句:


ConnectionnewConn=com.mysql.jdbc.ConnectionImpl.getInstance(host(props),port(props),props,database(props),url);

总之,就是根据给定的url和用户名密码,返回一个与数据库关联的Connection。JDBC相当于是程序与数据库之间的桥梁。得到Connect代表桥已经建好,此刻已经可以通车了。

你可能感兴趣的:(JDBC)