我正在尝试声明指向DB2数据库的Spring数据源。目前我使用org.springframework.jdbc.datasource.DriverManagerDataSource来设置连接,但是没有找到任何方法在数据源bean的数据库中指定数据库模式。有谁可以帮我这个?
答案 0 :(得分:12)
问题是没有标准的方法来设置架构,每个数据库都有不同的机制。
解决方法是将架构设置为db url ...
的一部分对于db2,网址将类似于:
jdbc:db2://SERVER_NAME:PORT/DATABASE:currentSchema=SCHEMA_NAME;
希望有所帮助...
特别说明:确保添加分号;在URL的末尾,否则您将收到错误,指出URL无效。最后也要确保一切;存在(甚至不是空格)。
答案 1 :(得分:2)
使用标准Spring命名空间无法实现此目的。 Rob Harrop对request的响应,将架构添加到配置中:
一般来说,这种功能应该被推送到连接池中,因为通过装饰器没有真正优雅和高效的方法。池可以为每个创建的连接设置一次架构,而在这里每次检索连接时都必须设置它。
如果您迫切希望在配置中设置代理,则提交者会包含一些代理代码,以允许指定架构。
答案 2 :(得分:0)
如果您的连接使用架构的所有者作为用户,则该连接将指向该特定架构。 即。如果用户user1是名为schema1的数据库模式的所有者,那么如果使用用户user1连接到数据库,则默认情况下连接将指向schema1。
我们使用spring提供的UserCredentialsDataSourceAdapter根据登录用户连接到不同的模式。这提供了一个基于用户指向特定模式的数据源。这使用基于线程的登录信息。每个线程必须决定它必须连接哪个模式,并根据该模式提供用户。