2

我正在研究执行以下操作的引擎:

  1. 从 DB 获取数据提供者信息(告诉我要连接哪些数据库和架构详细信息以获取我的数据)
  2. 使用该信息连接到数据库并获取我的数据,稍后我将使用这些数据构建一些 XML 内容。

处理和隔离数据库连接管理的标准设置是创建一个 DataSource bean(我使用 Spring 连接我的组件)并将其注入我的 ProviderConfigDao(加载连接配置)和 ContentDao(使用之前加载的连接详细信息加载数据) . 这将很好地将连接的处理与实际代码隔离开来,因此 DAO 类不需要知道如何以及何时创建/打开/关闭连接等。

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

我能想到的唯一解决方案是:

  1. 让另一个类/接口 (DataSourceProvider) 具有一个方法:

    //Gets the connection URL as parameter (which includes the schema name).
    DataSource getDataSource(String url);
    
  2. 在 Spring 配置中添加一个 bean 为其提供一个自定义实现,该实现管理每个模式的 DataSource 对象的创建。
  3. 将该对象注入我的 DAO 类而不是 DataSource 对象。

这不是一个糟糕的解决方案,但我想知道某些开源软件包中是否已经支持类似的东西......我宁愿使用已经完成和测试的东西,然后重新发明轮子。

干杯,史蒂夫。

4

1 回答 1

0

there's a JDBC Utils to get all the metada from a database org.springframework.jdbc.support.JdbcUtils parameters:

  1. DataSource
  2. Implementation of org.springframework.jdbc.support.DatabaseMetaDataCallback
于 2011-11-22T19:21:47.493 回答