为啥使用 tomcat 进行数据库连接池有两种选择(tomcat-dbcp 和 tomcat-jdbc)?

Posted

技术标签:

【中文标题】为啥使用 tomcat 进行数据库连接池有两种选择(tomcat-dbcp 和 tomcat-jdbc)?【英文标题】:Why there are two options for database connection pooling with tomcat (tomcat-dbcp and tomcat-jdbc)?为什么使用 tomcat 进行数据库连接池有两种选择(tomcat-dbcp 和 tomcat-jdbc)? 【发布时间】:2021-10-21 13:27:43 【问题描述】:

我想将数据库连接池添加到现有应用程序。我找到了两个基于tomcat的库tomcat-dbcptomcat-jdbc。我只是遇到了麻烦,我应该去哪一个?

【问题讨论】:

【参考方案1】:

总结

来自 Tomcat 提交团队成员的注释(请参阅 here):

Tomcat JDBC 是 Tomcat 的“自制”数据库连接池,不使用 poolPreparedStatements。 Tomcat DBCP是Tomcat的包重命名为Apache Commons DBCP 2的fork。默认使用Tomcat DBCP。

默认 DBCP 2 Tomcat 池

这是 Tomcat 中包含的两个池中较新的一个,也是默认使用的一个。它基于 Commons DBCP 2 池,如 here 所述。

您可以访问official DBCP site查看更多详情。

Tomcat 自行开发的 JDBC 池

这方面的主要文档页面是here。

您可能会在 Tomcat 文档的某些地方看到这被称为“新” - 例如here:

那么为什么我们需要一个新的连接池呢?

它在某个时间点新的。它已被 DBCP2 池取代。

使用哪一个?

这有点见仁见智,也可能取决于您的具体情况。如果您无法决定,可以从 Tomcat 的默认 DBCP 2 池开始。

只是补充一下:你可以使用上面的任何一个池与Tomcat,也可以使用其他池,例如HikariCP,c3p0等。您不必在两个 Tomcat 提供的池之间选择only

【讨论】:

以上是关于为啥使用 tomcat 进行数据库连接池有两种选择(tomcat-dbcp 和 tomcat-jdbc)?的主要内容,如果未能解决你的问题,请参考以下文章

tomcat 是一个请求产生一个线程吗

数据库连接池

Druid数据库连接池就是这么简单

Python数据库连接池DBUtils

在进行数据库编程时,连接池有什么作用?

Python数据库连接池DBUtils