文章目录
前言
Jdbc六步骤,Jdbc的封装、sql注入与预编译,自定义连接池,本质上一直在做一件事情,封装工具类JdbcUtil,并一步一步将其优化。需要我们自己封装么?其实有现成的框架可以直接用,市面上也有几个常用的开源连接池:c3p0以及阿里巴巴的德鲁伊。
既然是开源,那么经过多版本的迭代,功能肯定更加地强大,使用起来也更加地方便。
一、c3p0连接池
看c3p0官网:
①下载地址
点进去可以下载最新版的c3p0。
②文档说明
也就相当于工具说明书,不然别人也不知道怎么使用c3p0,那么具体如何使用?
①导包
将说明中的这两个jar包导入开发工具IDEA即可。
④创建数据源
文档中有编写的代码模板,我们只需要复制过来修改其中的参数就可以了,这些参数都很熟悉。
- mysql驱动路径
- 数据库url路径
- 用户名
- 密码
前几天学过配置文件,将这几个常用参数放入配置文件里面,这样代码也能更具有可拓展性。
既然我们都能想到配置文件,那官方文档中自然也会有它的说明,继续看文档:
⑤配置方法
其中有四种配置方式,最常见的是使用xml来配置。
⑥xml文件的设置
其中文件名要以“c3p0-config.xml”的命名规则,不然没法运行,并且要放在IDEA的src路径里面。
至于其配置文件如何编写,一样还是继续套用模板,我们只需要修改其中的属性:
⑦数据库连接参数
设置成自己的参数即可。
⑧连接池参数
这个在具体的项目中设置不同的参数,其实理解起来也都是见名知意的:
- initialPoolSize:初始化连接池大小
- maxIdleTime:最大空闲时间
- maxPoolSize:连接池最大容量
- minPoolSize:连接池最小容量
- maxStatements:最大语句对象
最后代码编写完了,做一个测试,同时也再回顾一遍连接数据库的代码:
①配置c3p0连接池
如果有xml配置文件,那么配置信息不用再逐个设置了。
②从连接池中获取连接
直接从c3p0连接池中获取连接。
③预编译及处理结果
④释放资源
close方法本来的意思是将连接销毁掉,但事实上c3p0中close方法是将连接返回到连接池中而不是销毁。
二、Druid
在GitHub中可以找到druid:
中文译名:德鲁伊。这是阿里巴巴开源的一个数据库连接池。
Druid是目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,想想一年一度的双十一,春运的抢火车票也就能理解了。
①创建德鲁伊对象
我们可以发现其API还是那些属性设置,当然这是最基础的4个,还有一些比如连接池大小什么的,这些要具体项目再设置。
②配置文件druid.properties
同样的道理,可以将这些属性放到一个配置文件里面,从而提高代码的拓展性。
c3p0中使用的是xml,德鲁伊中使用properties。
配置文件完成,那如何使用它呢?
①工厂设计模式
DruidDataSourceFactory,德鲁伊数据源工厂,既然是工厂那通过它就可以直接创建数据源,其中参数即为所编写的配置文件,其余步骤也就是连接数据库的常规操作了。
②从连接池中获取连接
③预编译及处理结果
④释放资源
同样的道理,德鲁伊中也改造了连接的close方法。
三、工具类的封装优化
今天学了连接池,那么也可以把连接池封装进JdbcUtil中,比如说我们使用德鲁伊连接池:
①将德鲁伊封装进JdbcUtil类中
通过工厂设计模式获取数据源
②获取连接封装
通过德鲁伊数据源获取连接
③释放资源
其中连接的close方法被改造了,并不是释放连接而是将连接放回连接池。
优化好JdbcUtil类后,再直接用JdbcUtil类获取连接,实际上就是德鲁伊连接池的连接。