Jdbc连接池-仅使用运行时已知的多个模式

Jdbc连接池-仅使用运行时已知的多个模式,jdbc,connection-pooling,database-schema,spring-jdbc,Jdbc,Connection Pooling,Database Schema,Spring Jdbc,我正在对一台发动机进行以下操作: 从数据库获取数据提供程序信息,该信息告诉我要连接哪些数据库和架构详细信息以获取数据 使用该信息连接到数据库并获取我的数据,稍后我将使用这些数据构建一些XML内容。 处理和隔离数据库连接管理的标准设置是创建一个数据源bean,我正在使用Spring连接我的组件,并将其注入我的ProviderConfigDao加载连接配置,ContentDao使用以前加载的连接详细信息加载数据。这将很好地将连接的处理与实际代码隔离开来,因此DAO类不需要知道如何以及何时创建/打开/

我正在对一台发动机进行以下操作:

从数据库获取数据提供程序信息,该信息告诉我要连接哪些数据库和架构详细信息以获取数据 使用该信息连接到数据库并获取我的数据,稍后我将使用这些数据构建一些XML内容。 处理和隔离数据库连接管理的标准设置是创建一个数据源bean,我正在使用Spring连接我的组件,并将其注入我的ProviderConfigDao加载连接配置,ContentDao使用以前加载的连接详细信息加载数据。这将很好地将连接的处理与实际代码隔离开来,因此DAO类不需要知道如何以及何时创建/打开/关闭连接等

不幸的是,此设置无法工作,因为在创建连接时,我需要能够指定数据库架构。我从一开始就不知道所有不同的模式,因此我无法创建一组数据源对象来覆盖所有模式,因此必须在运行时创建数据源对象,并且对用户隐藏其创建

我能想到的唯一解决办法是:

另一个类/接口DataSourceProvider有一个方法:

//Gets the connection URL as parameter (which includes the schema name).
DataSource getDataSource(String url);
在SpringConfig中添加一个bean,为它提供一个自定义实现,用于管理每个模式的数据源对象的创建。 将该对象注入我的DAO类,而不是数据源对象。 这是一个不错的解决方案,但我想知道在一些开源软件包中是否已经有类似的支持。。。我宁愿使用一些已经做过测试的东西,然后重新发明轮子

干杯,
Stef.

有一个JDBC Utils可以从数据库org.springframework.JDBC.support.JdbcUtils获取所有metada 参数:

数据来源 org.springframework.jdbc.support.DatabaseMetaDataCallback的实现
有一个JDBC Utils从数据库org.springframework.JDBC.support.JdbcUtils获取所有metada 参数:

数据来源 org.springframework.jdbc.support.DatabaseMetaDataCallback的实现
您是否为您的项目实施了旧解决方案或发现了更好的解决方案?我没有发现更好的解决方案…您是否为您的项目实施了旧解决方案或发现了更好的解决方案?我没有发现更好的解决方案。。。