5

我正在尝试声明一个指向 DB2 数据库的 Spring 数据源。目前我正在使用 org.springframework.jdbc.datasource.DriverManagerDataSource 来设置连接,但没有找到任何方法来在数据源 bean 的数据库中指定数据库模式。有人可以帮我吗?

4

3 回答 3

15

问题是没有设置模式的标准方法,每个数据库都有不同的机制。

一种解决方法是将架构设置为数据库 url 的一部分...

对于 db2,url 看起来像:

jdbc:db2://SERVER_NAME:PORT/DATABASE:currentSchema=SCHEMA_NAME;

希望有帮助...

特别注意:确保添加分号;在 URL 的末尾,否则你会得到错误,说 URL 无效。最后还要确保什么都没有;存在(甚至没有空格)。

于 2009-08-08T12:50:49.423 回答
2

使用标准 Spring 命名空间无法做到这一点。Rob Harrop对将模式添加到配置的请求的响应:

一般来说,这种功能应该被推入连接池,因为没有真正优雅和高性能的方式通过装饰器来做到这一点。池可以为它创建的每个连接设置一次模式,而在这里您必须在每次检索连接时设置它。

如果您不顾一切地在配置中设置代理,提交者包含一些代理代码以允许指定模式。

于 2009-08-08T10:01:28.753 回答
0

如果您的连接使用架构的所有者作为用户,那么该连接将指向该特定架构。IE。如果用户 user1 是名为 schema1 的数据库模式的所有者,那么如果您使用用户 user1 连接到数据库,则默认情况下连接将指向 schema1。

我们使用 spring 提供的 UserCredentialsDataSourceAdapter 根据登录用户连接到不同的模式。这提供了一个基于用户指向特定模式的数据源。这使用基于线程的登录信息。每个线程必须决定它必须连接到哪个模式并据此提供给用户。

于 2009-08-11T14:03:23.773 回答