【JavaWeb】69:阿里的德鲁伊和c3p0

今天是刘小爱自学Java的第69天。

感谢你的观看,谢谢你。

话不多说,开始今天的学习:

在这里插入图片描述

这几天的学习,什么Jdbc六步骤,Jdbc的封装、sql注入与预编译,自定义连接池。

本质上一直在做一件事情,封装工具类JdbcUtil,并一步一步将其优化。

需要我们自己封装么?其实有现成的框架可以直接用,但学习阶段,自己将其过一遍也是很有必要的。

并且学的是这种封装思想,昨天自己尝试着用动态代理写了一个连接池。

其实市面上也有几个常用的开源连接池:c3p0以及阿里巴巴的德鲁伊。

既然是开源,那么经过多版本的迭代,功能肯定更加地强大,使用起来也更加地方便。

一、c3p0连接池

看c3p0官网:

在这里插入图片描述

个人习惯喜欢将浏览器设置成将网页英文翻译成中文,其实最好的还是要自己学着看英文文档。

只能说这还需要一个比较长的时间去适应。

①下载地址

点进去可以下载最新版的c3p0。

②文档说明

也就相当于工具说明书,不然别人也不知道怎么使用c3p0,那么具体如何使用?

1直接编写代码

完全就是看说明书,写的很明白了:

在这里插入图片描述

①导包

将说明中的这两个jar包导入开发工具IDEA即可。

②创建数据源

文档中有编写的代码模板,我们只需要复制过来修改其中的参数就可以了,这些参数都很熟悉。

也就是数据库四大金刚:

  • mysql驱动路径
  • 数据库url路径
  • 用户名
  • 密码

好,代码编写完毕。但是这种是代码直接编写。

前几天学过配置文件,将这几个常用参数放入配置文件里面,这样代码也能更具有可拓展性。

2使用配置文件

既然我们都能想到配置文件,那官方文档中自然也会有它的说明,继续看文档:

在这里插入图片描述

①配置方法

其中有四种配置方式,最常见的是使用xml来配置。

②xml文件的设置

其中文件名要以“c3p0-config.xml”的命名规则,不然没法运行,并且要放在IDEA的src路径里面。

至于其配置文件如何编写,一样还是继续套用模板,我们只需要修改其中的属性,网上一搜也会一大堆:

在这里插入图片描述
①数据库连接参数

也就是数据库四大金刚,设置成自己的,不再赘述。

②连接池参数

这个在具体的项目中设置不同的参数,其实理解起来也都是见名知意的,直接用软件翻译:

  • initialPoolSize:初始化连接池大小
  • maxIdleTime:最大空闲时间
  • maxPoolSize:连接池最大容量
  • minPoolSize:连接池最小容量
  • maxStatements:最大语句对象

3做一个测试

最后代码编写完了,做一个测试,同时也再回顾一遍连接数据库的代码:

在这里插入图片描述

①配置c3p0连接池

如果有xml配置文件,那么配置信息不用再逐个设置了。

②从连接池中获取连接

直接从c3p0连接池中获取连接。

③预编译及处理结果

这块代码也写了好多遍了,不再赘述。

④释放资源

close方法本来的意思是将连接销毁掉,但事实上c3p0中close方法是将连接返回到连接池中而不是销毁。

也就是说和昨天自定义的连接池一样,也将连接的close方法改造了。

我尝试着看了下c3p0中的源码,但实在是看不懂……

据说在c3p0中使用的是装饰设计模式,我们昨天使用的是动态代理实现该需求。

具体为何要用装饰设计模式而不是动态代理也不清楚。

二、Druid

在全球最大的同性交友网站GitHub中可以找到druid:

在这里插入图片描述
中文译名:德鲁伊。这是阿里巴巴开源的一个数据库连接池。

Druid是目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池

想想一年一度的双十一,春运的抢火车票也就能理解了。

在这里插入图片描述

①创建德鲁伊对象

我们可以发现其API还是那些属性设置,当然这是最基础的4个,还有一些比如连接池大小什么的,这些要具体项目再设置。

②配置文件druid.properties

同样的道理,可以将这些属性放到一个配置文件里面,从而提高代码的拓展性。

c3p0中使用的是xml,德鲁伊中使用properties。

配置文件完成,那如何使用它呢?

在这里插入图片描述

①工厂设计模式

DruidDataSourceFactory,德鲁伊数据源工厂,既然是工厂那通过它就可以直接创建数据源。

其中参数即为所编写的配置文件。

其余步骤也就是连接数据库的常规操作了。

②从连接池中获取连接

③预编译及处理结果

④释放资源

同样的道理,德鲁伊中也改造了连接的close方法。

三、工具类的封装优化

今天学了连接池,那么也可以把连接池封装进JdbcUtil中,比如说我们使用德鲁伊连接池:

在这里插入图片描述

①将德鲁伊封装进JdbcUtil类中

通过工厂设计模式获取数据源

②获取连接封装

通过德鲁伊数据源获取连接

③释放资源

其中连接的close方法被改造了,并不是释放连接而是将连接放回连接池。

优化好JdbcUtil类后,再直接用JdbcUtil类获取连接,实际上就是德鲁伊连接池的连接。

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

猜你喜欢

转载自blog.csdn.net/qq_41228864/article/details/106950887
今日推荐