Java数据库连接池之c3p0简介_动力节点Java学院整理
发布时间 - 2026-01-11 02:37:45 点击率:次c3p0是什么

c3p0的出现,是为了大大提高应用程序和数据库之间访问效率的。
它的特性:
- 编码的简单易用
- 连接的复用
- 连接的管理
说到c3p0,不得不说一下jdbc本身,c3p0愿意就是对数据库连接的管理,那么原有的概念还是得清晰:DriverManager、Connection、StateMent、ResultMent。
jdbc:java database connective这套API,不用多说,是一套用于连接各式dbms或连接桥接器的api,两个层级:上层供应用方调用api,下层,定义了各个dbms的spi的api(具体文档见:这里)。
主要要提的是:datasource、DriverManager,想到哪儿写到哪儿,datasource是更高级一点的api,原因在于相对对应用来说更透明。
Connection:同dbms的逻辑链接,类似于session管理概念, SQL statements are executed and results are returned within the context of a connection.
jdbc的概念就到这里,平时用得比较多。
c3P0的配置
c3p0的bean配置如下:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="checkoutTimeout" value="30000" />
<property name="maxPoolSize" value="15" />
<property name="idleConnectionTestPeriod" value="180" />
<property name="maxIdleTime" value="180" />
</bean>
还有一些配置选项,后续详细说明。可见c3p0的bean引用使用的是:ComboPooledDataSource,该类结构如下:
以上类图都不是很完全,不过大体能表达出类之间的原理:
1、bean:ComboPooledDataSource的父类:AbstractPoolBackedDataSource有一个poolmanager字段,存储着对pool管理器
2、获取ds.getConnection()链接对象时,内部使用getPoolManger()获取C3p0ConnectionPooledManager(mgr)对象,该manager管理着pool对象:C3P0PooledConnectionPool对象,mgr.getPool().checkoutPooledConnection()
3、自此该connection已经被获取到了
4、让我们看看该connection的真实面目吧:
ProxyConnection。
5、因此其实原理是:
从pool里获取到的connection,是proxy包装的connection,而对connection的释放或者重用,是pool的管理责任:初始化池大小,维护池的大小(expand或shrink),管理unused、expired、checkout、checkin连接。
真正底层的连接是jdbc自己的连接,而c3p0的管理部分,基本上使用的是synchronized关键字,使用timerTask定时器工作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Java
# 数据库连接池
# c3p0
# Java 数据库连接池c3p0 介绍
# Java数据库连接池c3p0过程解析
# Java使用C3P0数据源链接数据库
# 数据库连接池c3p0配置_动力节点Java学院整理
# 浅谈Java安全之C3P0的使用
# 的是
# 自己的
# 让我们
# 不是很
# 说到
# 详细说明
# 写到
# 管理器
# 这套
# 过大
# 多说
# 而对
# 比较多
# 就到
# 易用
# 类似于
# 还有一些
# 用得
# 大家多多
# 应用程序
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
高防服务器:AI智能防御DDoS攻击与数据安全保障
Swift开发中switch语句值绑定模式
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
WordPress 子目录安装中正确处理脚本路径的完整指南
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Laravel PHP版本要求一览_Laravel各版本环境要求对照
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
linux top下的 minerd 木马清除方法
javascript中闭包概念与用法深入理解
实例解析angularjs的filter过滤器
Laravel如何实现用户密码重置功能?(完整流程代码)
如何快速使用云服务器搭建个人网站?
大连网站制作公司哪家好一点,大连买房网站哪个好?
php485函数参数是什么意思_php485各参数详细说明【介绍】
原生JS获取元素集合的子元素宽度实例
香港网站服务器数量如何影响SEO优化效果?
如何在IIS中新建站点并配置端口与IP地址?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
百度浏览器如何管理插件 百度浏览器插件管理方法
制作旅游网站html,怎样注册旅游网站?
微信小程序 配置文件详细介绍
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
进行网站优化必须要坚持的四大原则
Laravel怎么清理缓存_Laravel optimize clear命令详解
如何挑选高效建站主机与优质域名?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
晋江文学城电脑版官网 晋江文学城网页版直接进入
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
5种Android数据存储方式汇总
Java类加载基本过程详细介绍
如何快速完成中国万网建站详细流程?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
Laravel如何使用模型观察者?(Observer代码示例)
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
如何快速搭建高效香港服务器网站?
canvas 画布在主流浏览器中的尺寸限制详细介绍
如何在阿里云域名上完成建站全流程?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
中山网站推广排名,中山信息港登录入口?
焦点电影公司作品,电影焦点结局是什么?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
下一篇:nginx运行状态怎么查看
下一篇:nginx运行状态怎么查看

