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

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

感谢你的观看,谢谢你。

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

image

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

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

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

并且学的是这种封装思想。昨天自己尝试着用动态代理写了一个连接池,当然市面上也有几个开源连接池:c3p0以及阿里的德鲁伊。

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

一、c3p0连接池

看c3p0官网:

image

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

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

①下载地址

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

②文档说明

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

1直接编写代码

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

image

①导包

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

②创建数据源

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

也就是数据库四大金刚:

  • mysql驱动路径

  • 数据库url路径

  • 用户名

  • 密码

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

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

2使用配置文件

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

image

①配置方法

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

②xml文件的设置

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

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

image

①数据库连接参数

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

②连接池参数

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

  • initialPoolSize:初始化连接池大小

  • maxIdleTime:最大空闲时间

  • maxPoolSize:连接池最大容量

  • minPoolSize:连接池最小容量

  • maxStatements:最大语句对象

3做一个测试

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

image

①配置c3p0连接池

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

②从连接池中获取连接

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

③预编译及处理结果

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

④释放资源

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

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

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

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

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

二、Druid

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

image

中文译名:德鲁伊。这是阿里开源的一个数据库连接池。

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

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

image

①创建德鲁伊对象

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

②配置文件druid.properties

同样的道理,可以将这些属性放到一个配置文件里面,从而提高代码的拓展性。c3p0中使用的是xml,德鲁伊中使用properties。

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

image

①工厂设计模式

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

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

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

②从连接池中获取连接

③预编译及处理结果

④释放资源

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

三、工具类的封装优化

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

image

①将德鲁伊封装进JdbcUtil类中

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

②获取连接封装

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

③释放资源

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

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

最后

谢谢你的观看。

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352