我们写的是连接池吗?Connection对象绝对不能关。现在写的玩意不是连接池。因为现在讲的是JDBC,连接池也是JDBC里面的,人家那是SUN公司定义的标准。标准,你那不是标准。既然是标准,你做连接池得符合人标准。DataSource才是数据源/连接池。你要做一连接池必须实现这接口,所有的连接池必须实现这个接口。

DataSource是子接口,子接口有父接口嘛。父接口里面的方法也需要重写。

实现了DataSource接口之后我这个就是标准的连接池了。代码要耦合度降低,不要依赖于任何东西,要符合标准。JDBC标准里面Connection对象用完就要close,close()方法不再希望销毁Connection对象,而是把它放回到连接池。原来的close()方法是销毁,现在的close()方法也是销毁,但是我们希望它不是销毁,而是放回到连接池。是指放回到开源的连接池,不是我自己写的连接池,因为你自己写的连接池根本就没做这事。你自己写的连接池根本没实现这个功能。

继承是绝对不靠谱的,close()方法是Connection接口里面的。你不知道具体实现类,你要知道具体实现类也行。但是你要是使用具体实现类,那就要用到驱动程序里面的包了。用到驱动包里面的类又是紧密耦合了。继承也是能做增强的。

装饰模式。


连接池就是一个集合,里面装了几个Connection,用的时候就从里面取一个,取完之后就放回去,这就是最基本的连接池。什么是连接池?实现了DataSource接口。DataSource里面有个getConnection()方法获得连接,那怎么放回去呢?Connection自己的close()方法的行为已经改变了,连接池已经把那个方法的行为改变了,你一调用close()方法就放回去了。


转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/6686498.html

day18 15.自定义连接池相关推荐

  1. 使用装饰者设计模式增强自定义连接池

    为什么需要增强? 自定义连接池中存在严重的问题,用户调用getConnection()获得连接后,必须使用release()方法进行连接的归还,如果用户调用conn.close()将连接真正的释放,连 ...

  2. jdbc 连接池 java_JDBC自定义连接池过程详解

    这篇文章主要介绍了JDBC自定义连接池过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 开发中,"获得连接"和" ...

  3. 数据库连接池之自定义连接池(mysql)

    数据库连接池之自定义连接池(mysql) 上一篇博文是"基于mysql的JDBC的增删改查的封装":点击可查看 今天本仙在昨天JDBC封装增删改查的基础上实现自定义的数据库连接池: ...

  4. day18 17.c3p0连接池使用

    连接池时间长不用空闲着,dbcp是不回收的,性能可能有些问题.c3p0是可以自动回收.实际开发中c3p的生产力比dbcp强,性能上更强. package cn.itcast.datasource;im ...

  5. java数据库配置_java--数据库(文件配置连接,自定义连接池)

    import java.util.ResourceBundle; public class Mtest7Demo { //使用properties配置文件完成数据库的连接 /* * 开发中获得连接的4 ...

  6. Java自定义连接池

    首先我们要定义一个连接池,就需要存储一些连接在里面,我们就需要集合来存储.当然这个连接池需要定义在静态代码块里面,集合定义在静态代码块里面,我们就需要在静态代码块外面定义一个集合成员变量.那我们定义连 ...

  7. 数据库连接池原理详解与自定义连接池实现

    实现原理 数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约.无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量.连接池的 ...

  8. 自定义创建rabbitMQ的channel连接池

    参考地址:https://blog.csdn.net/qq447995687/article/details/80233621 利用commons-pool2自定义对象池 commons-pool2是 ...

  9. 【数据库1】mysql,DDL/DML,DQL,外键约束,多表/子查询,事务,登陆,连接池,jdbc,redis,crontab,ftp,oracle,数据交换/存储/收集

    文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化) 1.1 服务端:双击mysql-installer-community-5.6.22.0.msi 1.2 客户端:命令行 ...

最新文章

  1. ​《头号玩家》中的“绿洲”,用 VR 可以找到
  2. Brian Kelly:比特币现金发展基金是大利好,现在正是买入时机
  3. [UIView beginAnimations:context:]与[UIView animateWithDuration:animations:]值得注意的一个区别...
  4. 在ASP.NET MVC 4中使用Kendo UI Grid
  5. oracle导致的负载高,Oracle 11g 数据库服务器CPU、IO负载高的故障排除流程
  6. 实验四android开发基础
  7. Python制作词云
  8. 双拼输入法中,例如“哦”“欧”“饿”“而”等,只有韵母的字怎样打?
  9. 深度学习(一、入门)
  10. 多测师软件测试肖sir_金融问题(1)
  11. 十分详细的阳光十六法则
  12. RISCV toolchain编译工具链搭建
  13. Openjudge上mooc组题目:魔兽世界:备战
  14. 傅盛认知三部曲之二:管理本质就是认知管理
  15. 【渝粤题库】陕西师范大学201961 中外教育管理史 作业(专升本)
  16. 计算机主板会自动切断电源是怎么回事,电脑开机自动断电怎么办
  17. 哈尔滨工业大学2023春 计算机系统大作业 程序人生-Hello’s P2P
  18. Java程序员学Golang
  19. 支付宝企业向个人付款实现
  20. Linux下安装SVN服务端的方法步骤

热门文章

  1. JSON字符串转为指定实体类对象
  2. 用c语言设计一个任意20个数升序排列,编写一个用选择法对一维数组升序排序的函数,并在主函数中调用该排序函数,实现对任意20个整数的排序。...
  3. web打印控件_web网页测试应该注意点(一)
  4. CentOS 7.6 安装 Maven 3.6.3
  5. 【uniapp】swiper 自定义轮播图指示点
  6. java stream流_Java-8-流(1)
  7. 蓝牙小电池图标_丽声小百科 | 乐趣助听器如何连接iPhone手机?
  8. 哈理工大学计算机专业宿舍,计算机学院举办“灯塔工程”之寝室文化节
  9. substr判断最后一个是不是逗号_用java帮助你判断一个数是不是回文数
  10. 云南公务员计算机类岗竞争大吗,2020云南省考难吗?楚雄州历年竞争比、进面分数告诉你...