00:00
好了,那么接下来呢,咱们就一起来看一看JDBC是什么?GBC是什么呢?是Java database connectivity啊?其实翻译过来就是Java语言干什么呀?连接什么数据库。啊,家里没出处。这只是一个表面的一个一个意思啊,JDBC是下面这几个单词的一个什么首字母啊,JBBC啊,Java源连接数据库。那么这个JDBC它到底是什么呢?就是说从本质上来说,JDBC是一个什么东西,我们得把这个得讲清楚啊,不能只说一下这个他的一个英语单词就算完事了,对吧。
01:00
那么这个JDBC的本质是什么呢?就是它本质是什么呢?我先给给大家一个答案啊,JDBC呢,是三公司制定的一套接口啊。三公司啊,制定的什么呀,一套接口一接口接口知道吧,Interface吧。是不是,哎,接口都有什么调用者和实验者吧,接口都有什么调用者和什么实现者。对不对,哎,我们面向接口调用是不是,或者叫面向接口写什么实现类。啊,这都是什么呀?哎,这都属于面向什么接口编程。是吧,那现在我现在先问大家一个问题啊,就说我在讲究这些本质之前呢,我先问大家一个问题,什么问题,就是这这个面向接口编程,为什么要面向接口编程。
02:07
为啥?结耦合呀,这个你们应该张口就来啊,结耦合。降低对吧,其实就是降低程序的什么,降低程序的耦合度,提高程序的扩展力。多肽就是多肽机制,就是非常典型的什么面向什么抽象编程。这句话怎么理解?面向抽象编程不要什么他提倡是不要,不要面向具体编程,那比如说animal a1什么cat对吧?Animal a new什么呀?诶animal a new1什么dog,我们建议这样写。
03:12
是不是哎不建议什么呀,哎,DOGD等于六什么dog对吧?哎或者说cat c等于六一个什么呀,Cat我们不太建议后边的这两种方式,我们建议使用这种方式,我们建议对吧,我们不建议。那为什么我们建议这个呀。负类型的引用指向了一个什么子类型的对象,比如说我定义了一个方法,这个方法叫什么呢?叫做。记得。这是一个什么函数啊,或者什么什么方法呀,这是一个喂养吧,喂养的方法,我要喂养什么呢。
04:05
动物对吧,你不要写dog,如果你这个参数写一个dog,就意味着你将来您这个方法只能喂养dog。听懂了吧,您这个位置别写cat,您要写cat,就意味着您这个方法死了,固定死了就只能喂养cat,如果您这个方法将来既想喂养dog,又想喂养cat,您就别写dog和cat,您写animal,这叫面向。抽象编程。懂了,就是我们多肽。提了这个机制啊,这是面向对象的什么三大特征之一啊,封装继承和多肽是不是多肽是非常经典的设计,负类型引用指向子类型对象,这个语法在Java中被允许。
05:05
下面的这个喂养的这个方法,Feed就是非常典型的面向抽象编程,并没有面向具体,或者换句话说的更形象,叫面向负类型编程。副类型负其实就是一种一种抽象吧。那我问你接口是抽象的吗?接口是完全抽象的,所以我们面向抽象编程,同时我们也可以说面向什么接口编程,或者说我们说面向接口编程,其实就是面向什么抽象编程。那面向接口编程的目的是为了什么?面向抽象编程的目的是什么?我刚才说的很清楚,就是面向抽象编程可以让你程序更灵活,可以让你程序的扩展力更强,可以让你的程序的结耦合,耦合度更低一些。
06:01
这是一个思想,您只要是从事软件开发,只要是Java这一块,您这一辈子都受益。就这一个思想,咱就单凭这一个思想,在后期我们进行软件系统设计的时候,你都要考虑进去。你不要设计的这个软件,什么地方都不能动,一动就散架,说白了一动就完蛋,这叫面向具体编程,就是说你所有的东西全用电焊焊起来了,焊接懂吗?哪一块都动不了,要想动怎么办?只能切割,没办法是不是你不要搞这样的,你最好部件跟部件之间有一个什么,有一个插槽,能能接上,明白吧,将来要想拆的话,直接一拽就开了,可以扩展,懂什么意思吧?这叫面向接口编程,你不要整的面向具体一样,所有东西都都都都都,我说了都像焊接,焊接在一块,那你想扩展你还怎么扩展。对吧,好,那组件跟组件之间要想扩展的话,它是不是之间有有个接口啊好,那我问你这个接口。
07:01
是不是就是一种抽象的协议?螺栓跟螺母之间,我规定它是三毫米或者是四毫米,或者是一厘米或者是两厘米,那你说我刚才嘴里所说出来这个三毫米或者四毫米,或者是我说的这个这个这个一厘米两厘米,那我问大家一个问题,我说的这个值是不是就是个接口?抽象的。是不是还抽奖?接口的作用。提高程序的扩展力。降低程序的耦合度。但是接口你定好之后,你双方都不遵守,那有啥用啊,没什么用吧,我定这个螺栓跟螺母之间啊,那个那个接口的大小啊,它那个是一厘米,对吧,那你就遵守这个,我也去遵守这个生产螺栓的大批量生产,生产螺母的大批量生产,生产完之后螺栓跟螺母完全可以对接在一块儿,为什么他们可以无缝的对接,原因就是因为他们都遵守了一套规范,而这套规范就是我刚才所说的什么呀,什么一厘米啊,两厘米啊,明白我说的意思吧,诶这个我所说的这个一厘米两厘米,这是我定的这个规矩,我定的这个抽象的协议,我定定的这个抽象的接口,我定完之后您都得遵守,调用者得遵守,实现者得遵守,调用者和实现者都同时遵守这个接口,将来才可以无缝对接的,不能随便来。
08:29
那我们现在主要讲什么,为什么拐到这个上面了?各位啊,咱们回到正题上,正题是我要重点讲的是JDBC的什么。本质它到底是什么?我上来第一件事我就给大家暴露出来,说JBC啊,它是三公司之间的一套接口啊,一套接口先给大家找找啊,来JDK的帮助文档看打看JDK帮助文档啊,打开之后我们找一找java.circleq包,你看有个circle口包啊,找找Java circle啊,Circle你看。看见了吗?诶往下看是不是有很多接口,其中有个接口叫connection,你猜能猜到这个connection接口表示数据库连接对象吗?连接吗?对不对?哎,就是这个东西,我先提前跟你打个招呼啊,就JDBC呢,是三公司制定的一套接口。
09:15
哪个包下的,这个包下的就是这个软件包下有很多什么接口。提前订好了。那为什么要定义这套接口呢?你现在需要思考一下。为什么散制定一套什么JDBC接口?不是指定啊,是制定GPC接口呢,为什么。
10:01
原因很简单。因为每一个数据库的底层实现原理都。不一样。Oracle数据库有自己的自己的这个。原理吧,是不是买SQL数据库也有自己的什么原理?Circle什么?哎,我们叫circle server。MS啊,数据库也有自己的原则等等等等,每一个数据库产品。都有自己独特的什么实现原理?那思考一下,如果没有这一套接口。我们是不是得写多套加法程序?
11:06
讲到重点上了。我刚才说的哪句话是重点?如果没有接口,我们Java程序是不是连接my circlele的这个Java程序,我们得写一套,我们连接Oracle的这个,因为Oracle的底层原理跟my circlele不一样啊,我们连接Oracle数库是不是也得再写一套,我们连接微软的这个SQ server不再写一套,我们对于Java程序员来说是痛苦的,为什么?因为我们需要写很多很多。不同的Java程序。为了方便我们Java程序员,散公司站出来说,来,我定义好一套接口,所有的Java程序员都去面向这套接口写代码。不用关心底数据库是谁,不用关心底层是Oracle还是买circle还是DB two还是C还是circle server,根本不用关心,因为这套接口的实现方是数据库厂家去实现的,接口的实现类不用我们写,我们只需要命令接口去调用。
12:04
公司负责干什么,定这个接口?我刚才就跟你说了啊,任何一个接口它都有实现者跟什么调用者,实现者与调用者都得面向接口去。写代码。这个接口的实现者谁,谁去实现?谁去实现这个接口?各大数据库厂家纷纷响应,上公司定好一道接口之后买后。对这套接口进行实现。Oracle是不是也对这套接口进行实现?微软的server是不是也对这套接口进行实现?也就是这套接口现在有下边有好几套实现类对吧。但是接口只有几个一个,谁去面向接口写代码,我们啊,听明白了吗?
13:00
这个图怎么画?这个就是。GBC接口。一套什么interface?各位啊,你这位子。他是不是。是不是啊,它是一套啊一套。那佳话程序员在哪儿啊,这。这个是加法程序员各位啊,就是说编写什么JDBC。或者是加个程序。
14:01
面向什么JDBC接口写代码?也就是说他参照的是。这套接口。不用管别的。嗯。但是你这套接口有没有实现啊。不会。来。接口怎么能没有实现类呢?如果接口没有实现类,你程序能运行吗?这个位置是买SQL,什么数据库厂家的谁Java程序负责编写什么JDBC接口的什么实现类。也是一堆什么,最后也是一堆什么,是不是?
15:07
那Oracle呢?Oracle一样的Oracle数据库厂家的什么Java程序?负责编写JDBC接口的什么实现类,它最后也是一堆什么呢?第2CLASS。看好了各位,包括。MS的circle server数据库厂家在什么呢?加va程序员也是负责编写什么JABBC接口的什么时间类,它最后呢是会生成一堆什么第2CLASS。
16:10
注意。我们这个。实现的是这个接口。这个同样也是。啊,下面这个买呃,诶这个SQL server啊,Ms so server它也是实现的什么呀,这套接口。对于我们Java程序员来说,我们不需要关心这些。这些实现类。我们只需要关心什么就行了。这套接口就可以了。您最后写的是不是一套点是不是加号程序,写加号程序啊,加号程序也是一一堆class文件啊,它这个接口是不是也是一堆class文件,诶这些实现类。
17:03
也是一对。那现在呢,我们再反过来问一下大家。你得找到自己能够亲手找到这些class,它的存放位置在哪?首先我们找一下这个class在哪。同学,你应该马上告诉我啊,我刚才有没有给你打开JDK的帮助文档,JDK的帮助文档当中有没有javaq这个包,Java思这个包下面是不是有很多接口。这就是谁?这就是谁?谁呀?是不是他是不是这这这这个接口,好各位,我们这个class是不是我们将来要写的程序。
18:06
这个是不是也找到了,这个找到这个找到这个是不是没找到,好这个是是是不是需要从网上下载。买你得去哪下载MY搜Q的这套class文件,你得去哪下载买的官网Oracle的这套件你去哪,你得去哪下载Oracle官网这个class文件,你得去哪下载circleql server的官网去下载。听懂了吗?好,看看在哪?在哪各位看好了啊,在D盘的cos目录当中啊,有一个06DCC当中呢,有一个什么呀,叫做resources地方,看见了吧。哎,就这个。就这啊,打开看见架包了吗?解压一下呗。把这个架包解压之后打开,大家看里边是不是很多点class文件。
19:05
看见了吗?诶。记住了啊,这个。有一个专业的名词。叫驱动。这是什么驱动?买circle驱动,这是什么驱动?Oracle驱动,这是什么驱动啊,Circle server驱动。注意注意啊,驱动就是一个假包。这只是一个名词,各位啊。
20:07
驱动。所有的数据库驱动都是以架包的形式存在,架包当中有很多点class文件。这些class文件就是对谁JDBC接口的什么实现。驱动不是Sam公司提供的,是各大数据库厂家负责提供。
21:10
下载驱动架包需要去。数据库官网下载。也就是说,如果将来大家。连的数据库既不是这个,也不是这个,也不是这个,您连的是DB two或者C这样的数据库,你需要干什么呀?去他们的官网下载什么驱动下载架包去。您不要小看这个价包,这个价里面放的是一大堆的class文件。这些class文件就是对我们散公司这套接口的实现类,你永远记住一个程序,如果只有接口,没有接口的实现类程序是永远无法运行。
22:10
啊。
我来说两句