存放数据库物理连接的容器
C3P0PooledConnectionPoolManager.getPool() -> C3P0PooledConnectionPool -> ResourcePool(BasicResourcePool) rp -> HashMap managed
存放数据库物理连接的容器其本质是BasicResourcePool对象中的managed属性,类型是HashMap
时机
创建ComboPooledDataSource对象并没不会初始化initialPoolSize个数据库连接,初始化池的时机是:
创建C3P0PooledConnectionPool对象,在创建C3P0PooledConnectionPool对象的过程中初始化initialPoolSize个数据库连接
时机的两个具体表现:
1. 获取池中数据库连接数量
2. 第一次获取池中的数据库连接(一般发生在Spring事务管理过程中的开启事务阶段)
上述两个过程会判断是否存在C3P0PooledConnectionPool对象,若不存在,则创建一个新的C3P0PooledConnectionPool对象,并初始化initialPoolSize个数据库连接
本文详细解析了 C3P0 数据库连接池的工作原理,包括连接池的初始化时机及其内部实现机制,如 BasicResourcePool 中的 managed 属性如何管理数据库连接。

被折叠的 条评论
为什么被折叠?



