00:01
好,咱们今天的内容呢,是叫连接词。好吧,也是咱们数据库这一块的最后一个知识点啊。咱们把这块讲完的话,就应该是开始咱们的前端的课程,嗯,咱们这个连接池的技术啊,是咱们以后在项目中。必会的一个技能。哎,但是在真正的项目中啊,具体用什么样的连接池,还得是这个这个你们的领导去规定呢。但是不管你用什么样的连接池,它最终的核心的概念仍然是连接池,所以必须把这个概念搞清楚好吧。嗯,什么是连接时呢?大家看到这么一个动作。我每次和数据库打交道的时候,都需要打开连接,就是get连接一下,然后操作完成了还得close一下,对吧。每一个方法是不是都需要开,都需要关啊。
01:04
那么多次重复的操作,或者说频繁的在这一块做这个事儿的话,对数据库的性能。是有一定的影响的,哎,是有一定的影响的,而且他还非常资源。当它并发量较大时,执行速度呢,受到极大的影响。知道什么是并发吧,好多人同时访问是吧?呃,所以呢,咱们应该怎么解决这个问题,并发量的问题。并发量的问题,可以预先同数据库建立一些连接,放在内存里边。哎,建立一些连接放在内存里边,就是提前,如果你还没有连接数据库之前,我就把这些连接对象一个一个的连接对象已经建立好了,就不管你连你连没连接我我先把这些东西给你准备上。然后呢,放在内存中。
02:02
OK,应用程序需要建立连接的时候,直接从这里边往出拿。哎,你用到的时候从这里边拿一个,哎,最后呢,用完你再给我放回去。有点类似于什么呀,现在很多共享资源是吗。共享单车、共享充电宝。是吧,进来咱就别说共享单车充电,共享充电宝啊,一般都是车站里有是吧。还有那么个架子。这里边儿呢,有很多充电宝放在这儿。这些充电宝不画了啊,就是咱们这个这个这个车车站还没有营业呢。比如说咱们车站里一个人没有呢,这些充电宝是不是就已经在这了?啊,为的是什么呢?就怕你临时过来拿,然后我临时给你个充电宝啊,人太多的时候没法解决这个问题,所以呢,我提前准备好这么多个放在这里。然后车辆车这个坐车的人多的话,上这里边儿一看呀,来一个拿走一个,看一个拿走一个,看一个拿走一个,这样的话,它的速度是不是很快呀。
03:08
啊,叫共享资源是吧,它这个数据库的连接池呢,也是这部概念。就怕你并发量较大的时候,这个影响是极大的,所以呢,咱们可以预先建立一些连接,放在这儿供大家使用。啊,然后呢,记住了,你要用完给他放回去啊,你不放回去,你不形成了一种偷盗行为了吗?是吧。好。这个概念不懂的话,咱再看另外一个。实力哈。呃,拨打电话。拨打电话。哎,之前的拨打电话什么样呢?我打进去你就得等,你就得接是吧。我打下去你是不是得接呀。所以呢,像性这个性能很慢,所以看这看这。哎,咱们就搞了一个叫热线电话的一个概念。
04:04
什么呢?拨打热线电话的时候。热线电话号码对外是相同的。啥意思啊,咱班全班比如说30个人。同时拨打10086。你说咱们是不是都能同时被服务啊。对吧,哎,都可以被服务吧,因为1008510086的客服中心不仅仅是一个话务员,它有很多个是吧?哎,他很多个都在这已经上班了,就等着你访问呢,所以咱们同时并发量多大呀,30个人是吧。同时打过去。哎,他就一个一个一个开始接。你想想,如果没有这个热线电话这个概念的话,以前打电话会怎样?你想给108打六,你得记住10686杠什么转1170是吧?我记得以前打电话是不是都那样,拨打电话转多少多少号,拨打电话转多少多少号是吧。
05:05
座机号。这样的话呢,它就很影响效率啊,我想访问一下我这个手机,我得记多少个电话号啊。对不对,所以咱们热线电话就有效的解决了这个问题。解决这个问题哈,当所有客服都在忙的时候。哎,真是,毕竟客服中心有这个限度是吧,所有人都在忙的时候,如果再有电话打入就需要等待了。经历过吧,怎么说这句话?什么客服怎么怎么的,反正就是。太忙了,是那意思是吧,完了那个那个请稍后再播,或者或者怎么着是吧。然后呢,就是所有人都在接电话呢,然后当。其中有一个客服,他刚把这个电话撂下,然后他就另一个电话就进来了,他就紧接着接通这个。哎,这就是热线电话的这么一个概念,其实和咱们的连接池的概念是一样的。
06:04
应用程序从连接池中获得连接。嗯,有点这个概念,我再给大家举个例子啊。以前咱们想吃鱼,想吃鱼怎么办呢?我这块是我这块是你的妈妈。妈,我想吃鱼。这个请求是不是发送过去了,要求告诉你妈了,然后你妈怎么着呢?之前啊,之前很早很早以前哈,假设啊。没有什么菜市场,没有什么超市,呃,你妈呢,拿一个。拿一杆枪去河水里边去插一根鱼回来是吧?然后回来烹饪给你吃。然后下一次你还想吃,你妈妈呢,又下河里边就再给你抓一条回来再给你吃啊。然后你妈一想,不行啊,这孩子这么爱吃鱼。这每一次抓一遍太累了是吧?咋办呢?哎,你妈妈怎么办的呢?这么办呢?哎,上这个渔场里边,他就猛猪,一天抓了80条回来。
07:05
然后呢,在你家门口搞了一个水塘,或者说挖了一个坑。把这八条鱼全都放这个坑里了。哎,当你再想吃鱼的时候,你妈妈就不需要再抓一个了,是吧?上你自己家水塘里边捞一个就吃吧,想吃捞去,想吃捞去。是不是省时省力啊,还方便啊。就是这个过程啊,这个其实就是咱们连接池的原理了。好,咱们再回到程序上,它这个就是你每次连接这个数据库啊,每次连接数据库诶诶点着。每次连接数据库,它都重新创建连接,然后又关闭连接,其实很累的。怎么办呢?你想连接数据库是吧,好嘞,我们数据库啊,提前准备了80个连接在这里。你想要连或者连接好,你不需要跟我打交道了,你只需要上这个水池里边捞一个连接,你就可以访问的。
08:01
对吧,但是记住了,你用完我这个链接怎么着啊,你再给我放回来。哎,用完再给我放回来,是这么个过程。OK,明白这个连接池的这个概念了吗?就是这个原理哈,好了,那咱们市面上啊。呃,所有公司都看到这个连接池技术的一个好处了,所以它有很多产品,连接池技术有很多产品。首先第一个给大家介绍的啊,叫DBCP连接池啥意思呢?这个DBCP啊,你就理解为就是连接池技术的一个品牌。比如说笔记本,联想笔记本、IBM笔记本。苹果笔记本,它只是一个品牌而已,OK。好了,这个连接词啊,叫DBCPDBCP,然后你看这个单词就是database,就是DB嘛,然后连C呢,就是这个。连接是吧,然后po这个单词就叫水池水塘的意思。
09:00
它就是连接连接数据库连接的一个水池是吧。然后这里边呢,它是Java数,呃,连接出的一种,它是由谁开发呀,就再一次看到了阿帕奇呀。还有阿帕奇开发啊,好。然后呢,它呢是让程序自动去管理连接释放和断开自动管理的啊,但是它没有自动回收。空闲连接的功能。这个大概了解一下就可以了。大概了解一下可以了,好吧,然后呢,这个DBCP的需要用到啊,它需要引两个包,第一个叫DBCP,第一个叫po,第二个就抛。OK,那咱们也不写别的功能了,咱们就把刚才那个分页查询啊。就把刚才这个分页查询,现在咱这个分页查询DB类,它是怎么获得连接的呀。是不是传统的方式?前后的连接,看这什么,艾特一下。想要拿链接get一下,这种方式很慢很慢,咱把这个代码改造成连接池好吧。
10:07
来。嗯,那咱们这个DB类啊,我就直接创建DB类了,好吧。看了啊。接着呢,我这个DB啊,后边来个杠,你们叫什么呢?叫做这个这个这个。啊,对,DBCP行吧。DC小写了。OK,完成。好在这里边呢,咱把这个连接池呢,在这写一遍,在这写一遍复制。放到咱们的项目中。项目中。早测这个啊。好了,然后呢,把这个这个这个这个后和其实你看到这个能看图标吗。这个有这个彩色的这个。这个就是引入过的是吧,你看这个空白的是不是我刚弄上来的。
11:04
啊,所以把这个空白的选中,然后右键。添加,哎哟,我去没捡着。右键添加。好了吧,好,那包就整上来了,然后呢,现在咱们开始写这个代码。写这个代码。好,怎么写呢啊,不管记住了啊,你不管你是用的是连接词还是以前的传统方式,四个参数是无论如何都没有办法省略的。OK,所以把这四个参数搞过来。搞过来,这里边我写了一遍了,所以在里边我就偷个懒,好吧,把这个copy一遍。OK,这没问题吧,然后呢,如何获得这四个参数,是不是还是得去咱们的这里边搞啊。这个代码我copy了行吗?
12:00
OK啊,Copy了。好了,其实整个我现在搞了这么多,是不是就是获得四个猜啊。好了,接下来呢,咱们开始。连接池了啊。Public void get连接。之前是class.full name什么什么get connection是吧,现在完全变了啊,完全变了,使用的是连接池的一个类。叫做。叫做data source,咱们取大写字母叫做。BDSBDS另外一个啥。这是什么呀?基础的数据源头。基础的数据源。然后呢,在这里边儿,在这里边儿咱们就可以搞了。看好了啊。
13:00
BDS设置一下,设置什么呢?这里面直接有单有这个代码的driver看到了吗。好吧。是不是driver class啊,哎,那就是咱们的driver。BDS,再设置第二个是URL URL BDS设置username。哎,这个里边叫内蒙啊。BDS点三。最后一个啥来着,Password。PWD。好了。然后通过这个数据源头。这个叫数据源啊。数据的源头。然后进行跟着呢,就要通过。数据源获得连接对象。啊,Con等于。
14:00
叫做BBDS,点点get。Connection。Connection。好把这个没有声明哈,创建变量。这没有成品,成品变量。放在这儿。啊,看到了。也就是说现在咱们这个get这个连接,对连接方法是变变成这样了。好了,来咱们感受一下啊,感受一下。呃,怎么感受呢,我这个分页的实现类,我原来是不是搞的是tools里边的DB啊。现在应该变成什么了?DB下划线叫做DB。CP是不是引这个类了?好,来看这儿。连接对象。他干嘛,他引不到是吗?哎,写成私有了啊protected。
15:02
是不是这个代码没有任何问题啊。但是这块注意啊,我换成数据源了。好了,来测一下。没毛病吧?程序是不是正常运行啊,哎,这就是咱们数据源。数据源DBCP的用法。DBCP的用。这里边儿设置四个三。哎,设置四个参数。当然,咱们来看一下PPT啊。在呢?好,获得数据源一定要再强调一遍,一定要看我的PPT啊,然后呢,这里边儿呢,我直接set了四个参数,而这四个参数是不是也可以放在pro文件里啊。
16:01
OK,也可以直接在这写哈,然后紧跟着呢,最后一步,刚才是不是也见识过了,从数据源拿链接。OK,那中间这些代码刚才我没有写,它是干嘛的呢?它是连接池特定的一些参数。你看这里边儿呢,有不是默认的啊,是你手动设置的。手动设置了,你看最后一个啥意思,你猜。就是你在你家门口挖的那个坑里边,默认往里边扔了三条鱼。对吧,哎,扔三条鱼。比如说想吃鱼了,上这三条里边抓一条来。OK,这是三条鱼哈。然后这个十啥意思。最大连接数量。哎,也就是说我这个坑里边最多呢弄十个。最多能放十条鱼,再吃一条不行,焊死了是吧,扔不进去了没问题吧,然后这个是最小空闲的连接。
17:07
后边还有一个叫最大空闲的连接。啥意思呢?这个有点类似于咱们这个拿鱼这个案例,就不太贴切了哈,咱给它理解为是10086客服中心,你再看空闲和空闲能不能理解。什么叫空闲?就是说咱们这个客服中心最多同时五个人可以去吃饭。你们五个先去吃,吃完了你赶紧回来,另五个再去吃,明白啥意思吗?就是这个。空闲的连接是吧。只能把这五个空空出来。最大的空闲呢?八个对吧,八个,比如说如果说咱们现在特别特别悠闲,没有人多少人打电话,比如说最小空闲五个时候,什么时候呢?就是白天中午的时候,我可以让你们五个人去吃饭。
18:07
但是如果到了半夜12点或者后半夜的时候,咱们可以八个人去吃饭了,为什么呀,因为咱们的打电话的人本来就少嘛,后半夜了嘛,所以咱们可以多一点是吧,哎,多一点。这就是这四个参数的意思。当然这四个参数你是不是可以自己随便定义啊。咱们这里边儿定义的还是比较少的是吧,比较少的只是让大家简单的理解一下好吧,啊这些参数呢,以后呢,会具体的用到,尤其是以后咱们在后期就是呃,高级课里边哈,用的这个框架中的连接池。咱们再详细的给大家测试哈。好了,那这个DBCP的连接池技术呢,咱们先暂时说到这。
我来说两句