我正在尝试声明一个指向 DB2 数据库的 Spring 数据源。目前我正在使用 org.springframework.jdbc.datasource.DriverManagerDataSource 来设置连接,但没有找到任何方法来在数据源 bean 的数据库中指定数据库模式。有人可以帮我吗?
问问题
13875 次
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 回答