You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDBC DataSource工作原理:getConnection()是否调用DriverManager.getConnection?

DataSource.getConnection() 工作机制及你的推测是否正确?

你的推测不完全正确,得看具体的 DataSource 实现:

  • 非池化的 DataSource 实现(比如DriverManagerDataSource):这种确实每次调用getConnection()时,都会直接调用DriverManager.getConnection(),用你配置的 URL、用户名、密码创建全新的数据库连接,用完就直接关闭,没有复用逻辑。这时候你的推测是对的。

  • 池化的 DataSource 实现(比如 HikariCP、C3P0、Apache DBCP 这些主流连接池):这种不会每次都调用DriverManager.getConnection()。它会提前初始化一批连接放在连接池里,当你调用getConnection()时,优先从池里取空闲的连接返回;只有当池里没有空闲连接且连接数还没到上限时,才会调用DriverManager.getConnection()创建新连接。而且你用完调用close()时,并不是真的关闭连接,而是把连接放回池里留着下次复用。这时候你的推测就不成立了。

简单说,DataSource 是 JDBC 定义的标准接口,不同厂商的实现逻辑差异很大,核心区别就是是否做连接池的复用管理。

内容的提问来源于stack exchange,提问作者Andrzej Jankowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:01:35