00:00
好,那下边呢,我们就来落地来看一下相应的这三种连接池技术该怎么去做了,哎,直接呢,回到咱们这个代码层面,哎,把这些呢都关一下,哎,然后这里边呢,我们开始去写,现在呢,我们要讲的是专门关于连接的问题了,哎,我再去新建一个包。那这个包呢,我就直接叫这个四了,这个我们来考虑的是关于这个连接的问题,哎connection哎,首先的话,我们来讲解一个,这个每次创新的时候都生成它啊没啥用,或者我再次这个创新的时候呢,把这个勾给它去了是吧,这就行了哈。然后呢,诶,我们下边呢,首先说明的叫C3P0,哎,它的一个测试。好,这里呢,写一个单元测试方法。嗯,行,那么怎么去用呢?那既然呢,你是第三方的,那就需要导入第三方的炸包,对吧,来找一下我们这个课件。
01:02
资料驱动,数据库连接池驱动打开,哎,这里边儿挺多的啊,就是下边你像这个啊,是咱们由这个给挤压出来的。嗯,然后呢,下边这俩呢,分别也是由这个和这个解压出来的啊,德录伊呢,就是由这个诶压出来的,是这样的啊,这个CP0注意千万要小心不要把这个zip文件ctrl CA zip文件的压缩文件的意思咱们说呢,咱们导入的都叫JA包啊,是这个点文件呢,给它导包以后生成的叫JA包,在这个打开以后有一个叫lib,打开以后的第一个诶CTRLCL一下把这个炸包,诶我们存放在咱们当前的这个lib下,CTRLV,那这就放进来了,放进来以后呢,点右键这块有个叫build pass,那ADD To Build pass。哎,这就可以了,那么导进来以后呢,我们要使用它这里边相关的API呢实现,对诶这个实现一个数据库连接池技术了,那该怎么去用呢?哎这块我们自然而然的就会想到它里边有没有提供相应的说明文档,C天P0打开,哎,一般的说明文档都在dock下啊,就是文档嘛,诶这个呢就是炸包啊这呢是一些实例啊,这个呢就是一个说明文档打开,诶这呢我会看到有一个indexr天猫文件啊双击。
02:19
哎,这里边儿呢,就说明了我们该如何去使用,哎C3P0这样的一个技术。好,打开了,诶打开以后的话呢,这就是一个文档了,下边呢是一个contents,就是目录,那这个目录呢,相对来讲也比较清晰哈,嗯,那么很自然呢,我们看到这有个第二项叫quick start快速启动是吧,说怎么用呢?诶你把刚才这个炸包呢导进来,这咱们都已经导过了,然后接下来的话呢,我们呃说你可以这样去写这个代码,那既然让我们这样写,我们就先CTRLC粘过来,诶CTRLV一下,哎,然后ctrl shift o,哎,基着我们刚才已经导入炸包了,所以呢,就把这个呢就导进来了,好导进来以后我们看一下啊,这个呢叫data source。
03:06
啊,叫这个data source,其实这呢,就是我属于我们刚才提到叫data source这样一个接口的具体的实现类了,诶实现类其实就它啊。行,然后呢,下边说set driver class,哎,这里边有异常,咱们把异常呢,也先给他抛一下,抛个比较大的了,这呢就相当于让我们填一下咱们的driver的那个具体的路径呗,诶,Com点。MY搜狗点GDB下的driver,诶这呢就是相当于咱们连接数据库的几个基本信息呗,哎下边呢叫set gdbc URL,诶这个我们就写一下,诶其实直接照它写就行啊,这呢是用的另外一个数据库,咱们这呢是买circle是吧,诶local host冒号3306,诶test的这个数据库,这是用户名root,密码AABC123。
04:03
完事了,嗯,然后呢,诶我们说数据库连接池,诶刚才呢,提到有一个点就是说,诶这个我们平时要自己写的话呢,说你怎么去设置它的这个峰值啊,初始的连接数啊等等这个概念是没有的,而我们这个数据库连接池,呃使用以后呢,大家去可以通过它的一些属性哎来进行一个管理,比如说像最小的数据库连接数啊,最大的数据库连接数啊,哎最大的空闲时间呀,哎我们都可以做一些设置啊,那这个设置呢,还是通过这个呃,CPDS点哎做相关的一个设置,比如说我们设置一个叫呃,Initial process。啊,我写个池,对,这就相当于设置了一个叫初始的这个池当中的连接数啊,初始时数据库啊,连接池中的连接数。哎,等等,那么我们通过相应的这样的一些赛的方法,就可以进行数据库连接池的一个管理啊,这个我们可以啊说啊,通过设置呃,相关的。
05:12
啊,这个参数。哎,对哎数据库哎连接池哎进行管理,嗯,那具体这个参数除了这个之外呢,还有哪些,哎,我们在这个文档当中再向后走一下,下边呢,这有一个11专门呢来提到了我们这个相关配置的一些属性,那这都是哎这都是哎大家呢,根据自己的需要呢,你可以在这里边去设置,比如说最大的空间时间是吧,哎这个最大的池子容量,数字化的容量,哎这个最小的容量哎等等这个我们都可以在这进行个设置啊成那这个呢,咱们就先回过来,那这样的话呢,我们就能够拿到一个呃CPDS,其实这呢就是我们要得到的一个,诶数据库连接池哎获取诶C3P0数据库。
06:09
呃,连接是行,那拿到它以后呢,我们接下来就可以通过这个对象呢,去获取一个连接了,第二诶,我们叫I get一个connection。哎,这个我们CTRLL一下,这就得到一个连接打印一下。嗯,这就可以了,前提呢,是你这里边儿这个至少这四个基本信息是不能写错的,那这时候我们测试。诶,你看这就获取到了,有同学看到这个红色就比较敏感啊,这个不是错误信息啊,这是提示的一个信息,来这呢,我们拿到这样一个对象,这就相当于我们获取了,诶C3P0的数据库连接池当中的一个连接啊,这是获取到了其中的一个连接而已。好,这个呢,咱们还不着急拿着这连接呢,去测试一下增产改查靠不靠谱啊,咱们接着呢再说一种方式,就是CP0的话呢,这种方式我们这个配置信息呢,还是写到代码当中了,这叫硬编码的方式,其实是我们不太提倡的,对吧?诶对,这呢只能算是我们这个叫方式一啊对,然后呢,我们自然而然的就会选择用方式二,就是提到配置文件,哎,这个呢,使用配置文件。
07:18
OK。诶,这个交一了,那使用配置文件该怎么做呢?还是看我们这个文档,这个文档呢,你还看那个quick start这块呢,其实就没有了。哎,你看这个文档里边,刚才我们也提到了,可以去做一些相关的设置嘛,那这里边也是提到这个设置的问题。最后这块呢,还有个这样的一个操作啊,叫data source加一个S了destroy,把我们这个连接池呢给放进去了,呃,这个压呢,就是当你要使用完最后都不用的时候呢,把这个连接池给关了啊是这个意思,但是一般情况下呢,咱们不会关连接池的啊。
08:02
哎,就我们粘到这块,哎,把这个点过来,哎,这个呢也可以导一下包,诶这个呢,大家知道这个事儿就行,就是整个的延池里边,我们比如说放了十个连接,这个呢是其中的一个连接,连接完以后呢,你可以把连接close,当然池子始终在,如果说我们这个连接池也不要了,你你可以执行这个操作啊,这个呢叫诶销毁。哎,这个C3P0啊,这个你造的这个连接池啊,一般的话呢,咱们不会做这个操作的啊,哎,既既然你提供这个数据连池了,这个连池呢,就会相当于一直存在,诶,所以我们就不做这操作了啊,大家知道这个事就行,就跟咱们讲这个网络编程的时候,那个服务端server socket一样,一般呢咱们都不会关的啊,然后下边我们来看使用配置文件该怎么做啊,打开这里边的没有了。没有了,我们就往后退,诶,然后往后找啊,这里边儿有个这个12提到了叫配置文件。哎,把它呢打开,说配置文件,咱们前面做的话呢,提到过,呃,叫JDBC.properties。
09:05
哎,就是写一个配置文件的方式,这块呢也提供了类似这样方式,那除了这个方式之外呢,他又提了一种说呢,可以写到一个插包文件当中啊对插包文件呢,咱们之前呢,没有呃具体的展开说过,只是呢,在一开始概述的时候呢,提过这个插包文件的一个作用啊,诶可以呢,给前端传输数据啊,也可以写配置文件,后边我们一讲web呢,大家就来接触这个插毛了啊,那这块呢,咱们虽然没有讲过这个,但是呢,它其实也比较好理解,咱们就用这种方式给大家演示一下,他这块也提示我们了,你要造的这个文件名就叫C3P0杠。Conig点长L这个文件名不要改,就叫这个名啊,CTRLC回过来这个配置文件在哪写,跟咱们原来的这个是同一个路径下,所以呢,Src下对吧?诶点右键我们去扭一个插包文件啊,有同学在这块呢,看不着插文件,你点other.other完以后呢,在这写一个叉毛。
10:06
哎,在这儿。哎,在这也可以啊,点next,哎,起个名哎,放到这,然后finish,哎,可以了。那有的同学呢,打开以后呢,诶创建完以后呢,是这样个效果,其实下边点一个S,诶这就是进入我们这个插播文件这样的一种展示方式啊,怎么写没讲过,没讲过不要紧,下边呢,有一个案例是吧?啊对,Here is an example啊有一个案例啊,告诉你这个该怎么写啊,你只需要做呢,就是把它CTRLC一下是吧?啊然后呢,再回过来,诶,CTRL,诶这个就不要删了啊,这个呢要给他保留,后边我们讲插的时候会说这是它的一个声明版本号是用的这个字符集啊,CTRLV。粘过来以后呢,这里边儿有一些呢,是我们不要的,咱们需要做一个处理,默认的一个配置这块到这我就删了,然后后边呢,还有一个说用户需要重写的,这个也不要,也就删了。
11:06
Ctrl shift f一下,哎,这块呢,有些注释,这个我们也先不要了啊,这个先不要了,Ctrl shift f行,那我们来看一下这块,这里边呢,说C3P0的一个configig,这里边我们叫name的config,自定义的一个配置,这是配置的一个文件名,这个文件名我们可以自己命名,哎,比如我这块呢,就叫hello c3P0,诶我就起了个名。OK,然后这里边呢,叫property,就是我们一个一个的属性啊,那一个属性咱们知道最起码是不是得有四个基本信息,诶那这块我CTRLC一下,咱们在这给它提供一下,哎,在我们插当中,这个注释呢,它用的是这样一个符号啊,诶这样一个符号,其实这个符号呢,比Java的我觉得也挺好,因为你在这里边写呢,这叫单行注释,你要这样写呢,它就叫多行注释是吧?啊也挺方便啊行,在这呢,我们说首先呢去提供获取连接的,哎,四个基本信息。
12:10
哎,基本信息咱们,哎刚才呢,这不是这四个,是把这四个复制的啊,哎,那就这四个跟这四个长得一样了,一会我们改了一个名,然后在下边呢,呃,这呢是体现我们说数据库连接池对连接进行管理的一些基本的属性啊这个我们标识一下啊,诶这个进行,哎数据库。哎,连接池管理的基本信息。看这样那一会呢,我们看这几个啊,先看上边,上边这块呢,提到叫四个基本信息,就咱们讲的这四个,那下边我们一个个去填,这个呢,就是基本信息的那个名,哎,这边呢,就是你对应的那个配置的信息了,这个里边呢就不能乱写了,你比如说我们写个user,我叫user啊,还叫username啊,这个N呢是大写还是小写啊。哎,其实这块呢,都应该遵循人家本身是怎么定义的来。
13:03
啊,因为我们这块写完以后呢,回头在这里边要读,读的话呢,其实是他自动去读的,所以你一定要跟他要读的时候呢,那个呃,前面这个字符呃,字符串图得匹配上啊。嗯,那我哪知道呢。诶,其实我们在这块呢,已经暴露出来了,诶像第一种联系方式里边,我们设置这四个信息,哎,比如说这个driver,它叫driver class,诶这边我们就知道这块呢,就应该咱们就在这写吧,诶driver,诶class,哎这个我们就在这写上。诶,com.MYSq.JDBC点诶driver,然后下一个这叫GDBCUUR啊这个呢,你就得按照人家这个要求来,哎,GDBCUL。JDBC冒号circle local host。
14:00
3306TEST这样,哎,咱们一直没有给大家去说这个事啊,什么事呢?就是如果说我们连的是本地啊,你自己这台主机的哎,默认端口号也是3306的话啊,其实我们这个操作呢,也可以省略掉啊,就是如果你连的就是本地啊,就是306的话呢,刚才这个也可以省略掉,那这块我们就省了啊,以前的操作呢,都这样,哎,然后下一个哎,User password。哎,有。陆。然后趴座的。哎,然后密码啊ABC啊123,那这呢,就是咱们典型的这个叉L语言的这种格式啊里边呢,都是一对对的标签,标签都是成对出现的,你看这个跟这个成对出现,然后诶这个跟这个成对,像这种呢,属于叫自关闭的,就是它呢没有成对的这样的一个匹配了,啊这个呢,诶是一个开始,这呢算是一个结束,嗯这样,然后呢,我们再看一下其他的这些基本信息,呃,比如说第一个,诶看看这里边我们想描述的是什么内容。
15:06
叫acquire increment。块就要求的一个增长数啊,这个呢,想表达就是当我们CTMP0数据库连接池当中的连接数不够了,那么啊一次呢,向我们数据库服务器呢,申请的连接数啊,就是当诶数据库。哎,连接池中的连接数不够时,哎,那么AC3:0啊一次性哎像哎数据库服务器,哎申请的连接数,哎这个连接数,哎那这块呢,比如说一次呢,让他申请五个啊这是他的一个信息,然后第二个。第二呢叫initial process,哎,那就是初始化的连接的一个容量啊,就是比如说一开始我们这个连接数是十啊,哎,C3P0。
16:08
诶,数据库连接池中,哎,这个初始化时。哎的看连接数,哎这是它了,好再往下。哎,Min process,哎,最小的一个池子当中的一个连接数啊,比我们这呢,还设成一个十。哎,这个CDP0数据库连接池当中,哎,维护的最少连接数。嗯,这样啊,那些同学想A初始化的时候是十,那要不够的话呢,比如说有11个来请求了,那我们可以呢,再一次性的去请求五个,那就变成15个了啊,那回头还不够呢,再去申请,那这块呢,呃,有最低的是不是还就有一个最高的有个上限。哎C3:0数据连接池当中,哎维护的哎最多的哎连接数。
17:04
哎,那也就是说呢,我们这个数据库服务器当中最多呢,我们维护啊,比如说100个连接,当你超过100个连接要访问的时候呢,诶,这时候指的是同时啊,那100个已经被占用了,然后第101个呢,就得要等待,因为这时候呢,我们不能再往上涨了,我这设置了一个最大值,哎,那么这个最大值当里边有一些空间以后呢,你要有一些新的连接就可以获取到了。那达到最大值以后,比如说这块呢,这个整个的连接呢,都降下来了,现在同时呢,也就比如说二三十个连接,那么已经达到100个了,那就意味着是不是有好多的都空闲起来了,诶我们其实还可以去设置它的最大空闲时间啊,你要达到那个最大空闲时间呢,还空闲了很多,那我们还可以一点点往下降降降啊,一直你可以降到比如说我们虽然初始之时,你可以降到只剩五个。啊,如果你要始终呢,都没有连接去访问了,我们可以把这个,诶之前呢,创建的这些再给他降下来啊好在下边。
18:03
哎,这个呢叫max statements,哎,就是我们CDMP0数据库连接池当中啊,维护的最多的的个数。哪会要最多?哎,维护的statement的个数。哎,个数,那这个个数呢,比如我们提供一个50个。哎,什么意思呢,就是你想咱们拿到连接以后呢,接下来你需要呢,传统SQ语句,那么我们就需要用statement statement,其实包括呢,我们说的prepared statement,这都算statement哈,哎,通过这个statement呢,我们去传统思O语句,并且去执行,哎我们这块呢,最多呢维护50个啊在下边说呢,哎,Max statements per connect connection,说每一个连接它可以使用的最多的,哎,Statement的个数,这个比如说我们写一个两个。
19:00
啊哎,每个连接中可以最多呃使用的啊STEM的个数。哎,也就是说我们一个连接有了以后呢,我们可以呢,用一个STEM去传送,再可以再去啊传送一下,最终呢,只让他用两。哎,等等,那这呢就体现了我们的呃,这个数据库整个连接过程当中的一些管理,哎,通过它相关的一些参数呢去设置,当然呢,不止这些参数啊,我们主要呢,就是熟悉一下常用的这些参数就行,那这个设置完以后,我们得想办法回来在咱们这个呃,Java代码当中去调用一下刚才的这个配置文件啊,怎么调用。哎,刚才粘了上边下边该粘了是吧?诶把这个呢粘一下,哎,CTRLC,诶回过来往这一粘,这块呢说诶你造的这个CDP0的数据库连接池,你这块呢,用的是什么呢?你看这个跟谁一样呢。这个跟咱们刚才在那替换的时候。
20:01
这个样。是吧,跟这一样,咱们刚才呢,是不是把这个改成叫hello c3P0了,诶CTRLC过来,哎这呢用这个名,哎用这名啊,你别写成这个C3P0-conig了啊这个呢是一个默认的名,这个名呢不要改,诶你给这里边的这个整个你做的这个自定义的配置起个名,在这儿呢,我们就导入这个自定义的这个配置的名就可以了,那得到这个呃,CPDS以后,接着通过它点来去get一个connection就行。然后CTRL1诶,Power异常,然后再接着CTRL1,诶拿了个连接。哎,这就可以了。来测试一下。OK。哎,这就没问题。有同学说说这靠谱吗?怎么感觉每次一整就对是吧?哎,那这里边呢,比如说我把这个密码啊,123加个四。哎,这块你再测试一下。
21:00
那这时候就联系不上了,诶过了一会时间以后呢,他就超时了,就断开连接了啊这块我就不演示了啊行,这块呢,我们得保证你填的是一个正确的,就刚才呢,这里边几个属性啊,大家不能够乱写啊,哎,你可以参照我们刚才提到的这个,诶11这边有一个配置文件嘛,诶配置文件里边写的那些信息呢,就是我们这边要求啊,你指定的这个信息啊,因为呢,你看这块我们读的时候呢,非常简单,就这一句话,它里边呢,其实是自动的会读这个文件了,人家呢,就相当于这块呢,类似于你这写的叫P。这叫value啊,你声别的时候呢,这叫k value6,然后他回头用的时候呢,他就去找这个K对应的value了,你要没有这个K的话呢,这个就找不到了,哎,自然的连接也连接不上啊好,这个呢,就是我们说的这个第二种方式。
我来说两句