DBCP 学习-1

BasicDataSourceFactory 使用JNDI时用来创建 BasicDataSource
BasicDataSource
先创建一个ConnectionFactory (DriverConnectionFactory) 驱动连接工厂,通过加载driverClassName, Class.forName(driverClassName);
再根据url得到Driver, DriverManager.getDriver(url);
设置连接属性 connectionProperties 用户密码
创建一个DriverConnectionFactory,驱动连接工厂,其实就是物理连接的创建工厂,这里创建的都是真实的连接
真实连接创建工厂创建完之后,再来创建一个connectionPool用来存放连接,在这里 如果是要跟踪废弃的连接 则创建 AbandonedObjectPool 否则 GenericObjectPool
对对象池设置一些属性,如 最大连接数 最大空闲数 最小空闲数等
如果 isPoolPreparedStatements() 为true 表明会为预处理语句池化,则需要一个
GenericKeyedObjectPoolFactory,用来为预处理语句 创建一个一个对象池
物理连接创建工厂已经ok,连接池已经ok
此时 创建一个 PoolableConnectionFactory, 将 driverConnectionFactory connectionPool statementPoolFactory
创建一个 PoolableConnectionFactory, 这个对象将从driverConnectionFactory中获得连接,放入 connectionPool
PoolableConnectionFactory 这个对象对外不可见
获得连接通过 connectionPool 的 getConnection 来从池中取
使用 PoolingDataSource 对 connectionPool 包装
初始化池: 根据 initialSize 往 connectionPool 中添加指定个数的连接返回一个DataSource
所以:从BasicDataSource中取的一个连接经过:
PoolingDataSource.getConnection()
从connectionPool 中 borrow 一个连接 AbandonedObjectPool(connectionPool).borrowObject()
在创建PoolableConnectionFactory时 虽然没有返回PoolableConnectionFactory,但是会设置pool的connectionFactory
这样在pool getConnection()的时候,会由connectionFactory来负责,决定是 makeObject 还是激活钝化等等
在borrowObject时会根据需要决定时 创建一个新的或者是activateObject
在returnObject 回调用 addObjectToPool 将对象返回到池中
内部有一个Evictor TimerTask,会 根据 _timeBetweenEvictionRunsMillis 定时来钝化一些连接 (PoolableConnectionFactory.makeObject() 生产的连接 最终是 PoolingConnection 通过PoolableConnection返回)
PoolingDataSource将这个连接包装起来返回
AbandonedTrace用来跟踪被废弃的对象
连接包括一些其他对象 如 resultset statement 都需要继承这个类
Delegating的对象都是为了增加AbandonedTrace而产生不会改变原来的方法的行为 池化的功能不再这里实现
DelegatingConnection close方法会先调用 钝化方法 之后会关闭连接
DelegatingDatabaseMetaData
DelegatingResultSet DelegatingStatement DelegatingPreparedStatement DelegatingCallableStatement
PoolableConnection 继承 DelegatingConnection
PoolableConnection覆盖close()方法,这里close不会将连接真的关闭,poolable在这里实现
PoolableCallableStatement PoolablePreparedStatement 都是如此
PoolingConnection 会对 预编译语句pool
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值