哪个连接池实现具有我想要的行为?

Which connection pool implementation has the behaviour that i want?

所以我是 运行 一个 spring 引导服务器,我用它来查询 MySQL 数据库。到目前为止,我一直在使用自动配置的 HikariCP 连接池和 JOOQ,所以我几乎与连接池无关。但是现在我需要查询两个不同的模式(在同一台服务器上),而且我似乎无法自动配置两个连接池,所以我不得不自己修改 DataSource。我想保留连接的本机行为,即有一组持久连接,以便服务器可以分派查询,一旦查询得到解决,连接仍然存在并且可以再次免费使用。我发现连接池的多个实现允许多个 DataSource 查询多个服务器,但我不知道它们是否每个都在使用我刚刚描述的行为。

Implementation #1 : https://www.ru-rocker.com/2018/01/28/configure-multiple-data-source-spring-boot/

Implementation #2 : https://www.stubbornjava.com/posts/database-connection-pooling-in-java-with-hikaricp

我觉得 #2 是最直接的解决方案,但我对每次我想查询时创建一个新的 DataSource 的想法持怀疑态度。如果我不关闭它,我是否只是一遍又一遍地打开现在的连接?所以很明显我必须在完成后关闭它们,但它不再是一个真正的连接池了。 (还是我理解错了?)

与此同时,#1 似乎更可靠,但同样,我每次都会打电话给 new HikariDataSource 所以这就是我要找的吗?

(或者是否有我错过的更简单的解决方案,因为我需要查询两个不同的模式,但仍在同一台服务器和方言上)

好的,事实证明我不必在我的情况下设置多个连接。由于我使用相同的凭据查询同一台服务器,因此我不必为每个 shema 设置连接。我刚刚删除了我在 jdbc url 配置中指定的模式:

spring.datasource.url=jdbc:mysql://localhost:5656/db_name?useUnicode=true&serverTimezone=UTC

变成

spring.datasource.url=jdbc:mysql://localhost:5656/?useUnicode=true&serverTimezone=UTC

然后因为我已经用 JOOQ 生成器生成了 POJO,所以我可以从模式对象中引用我的 table,即:Client.CLIENT.ID.as("idClient") 变成 ClientSchema.CLIENTSCHEMA.CLIENT.ID.as("idClient")。这样我就可以在不设置任何新的附加连接的情况下查询多个模式。

如何配置 MAVEN 和 JOOQ 以从多个模式生成源:

https://www.jooq.org/doc/3.13/manual/code-generation/codegen-advanced/codegen-config-database/codegen-database-catalog-and-schema-mapping/