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 】
相关推荐:
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
如何彻底删除建站之星生成的Banner?
如何破解联通资金短缺导致的基站建设难题?
如何挑选高效建站主机与优质域名?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel怎么判断请求类型_Laravel Request isMethod用法
在centOS 7安装mysql 5.7的详细教程
Laravel如何生成URL和重定向?(路由助手函数)
黑客如何利用漏洞与弱口令入侵网站服务器?
北京的网站制作公司有哪些,哪个视频网站最好?
如何在服务器上三步完成建站并提升流量?
Laravel如何处理文件下载请求?(Response示例)
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
Laravel PHP版本要求一览_Laravel各版本环境要求对照
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
如何在万网自助建站平台快速创建网站?
如何在不使用负向后查找的情况下匹配特定条件前的换行符
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Java遍历集合的三种方式
如何彻底卸载建站之星软件?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
网站制作企业,网站的banner和导航栏是指什么?
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
Python结构化数据采集_字段抽取解析【教程】
如何基于云服务器快速搭建网站及云盘系统?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
微信小程序 input输入框控件详解及实例(多种示例)
如何获取免费开源的自助建站系统源码?
文字头像制作网站推荐软件,醒图能自动配文字吗?
EditPlus中的正则表达式 实战(1)
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
如何用西部建站助手快速创建专业网站?
微信小程序 配置文件详细介绍
JavaScript如何实现音频处理_Web Audio API如何工作?
想要更高端的建设网站,这些原则一定要坚持!
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
网页设计与网站制作内容,怎样注册网站?
下一篇:nginx运行状态怎么查看
下一篇:nginx运行状态怎么查看

