Java池化思想之——数据库连接池

7 篇文章 0 订阅
5 篇文章 0 订阅

1、池化思想

池化思想,一般是对对象的池化。

池化思想的具体体现:字符串常量池、数据库连接池、线程池

好处:避免了重复创建对象的过程,提高程序的效率。为了资源的反复利用。

池: 是一个容器,可以是数组、集合。

2、连接池:

就是一开始时,就初始化创建多个数据库连接对象 放到池中,用的时候就去池中直接拿来使用,用完之后不需要断开连接,直接还入池中即可。

C3P0连接池的原理:
java为数据库连接池提供了一个 连接池接口DataSource,定义了一些规范,位于javax.sql包下。所有的连接池如c3p0,dbcp连接池等,都是DataSource接口的实现类。
我们想使用C3P0连接池来获取数据库连接对象,那么只需要创建一个C3p0连接池对象,然后从连接池中get()获取连接,使用结束后,调用close() 方法,将连接还回池中即可。
在这里插入图片描述
Java 除了规定了数据源dataSource接口外,还规定了一个 Connection 连接接口。如果使用的是mysql数据源的话,那么获取的连接对象类型应该是 com.mysql.cj.jdbc.ConnectionImpl。然后,在调用C3p0数据源返回连接时,返回的连接类型并不是正真的数据源连接实现类,而是 封装了真正连接类型的 一个代理类 NewProxyConnection。这个代理类中 保存了被代理了的对象(即真正的连接对象。)。在这里插入图片描述

因此假如 一个连接池中只有1个连接,现在来获取连接2次,我们会发现 返回的 collection 对象的地址不一样,所以就会以为两次获取的不是同一个连接。。实质上,返回的collection是C3P0 封装了真正连接对象的代理对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值