今天是刘小爱自学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类获取连接,实际上就是德鲁伊连接池的连接。
最后
谢谢你的观看。
如果可以的话,麻烦帮忙点个赞,谢谢你。