Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring数据源和数据库模式_Spring_Db2_Datasource - Fatal编程技术网

Spring数据源和数据库模式

Spring数据源和数据库模式,spring,db2,datasource,Spring,Db2,Datasource,我试图声明一个指向DB2数据库的Spring数据源。目前,我正在使用org.springframework.jdbc.datasource.driverManager数据源来设置连接,但没有找到任何方法在数据源bean的数据库中指定数据库模式。有人能帮我吗?标准Spring名称空间无法实现这一点。Rob Harrop对将架构添加到配置的响应: 一般来说,这种功能应该被推送到连接池中,因为没有真正优雅和高性能的方法通过装饰器来实现。池可以为它创建的每个连接设置一次模式,而在这里,您必须在每次检索连

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

标准Spring名称空间无法实现这一点。Rob Harrop对将架构添加到配置的响应:

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


如果您非常想在配置中设置代理,提交者会为代理提供一些代码,以允许指定架构。

问题是没有标准的方式来设置架构,每个数据库都有不同的机制

解决方法是将模式设置为db url的一部分

对于db2,url将类似于:

jdbc:db2://SERVER\u NAME:PORT/DATABASE:currentSchema=SCHEMA\u NAME; 希望这有助于


特别注意:确保添加分号;在URL的末尾,否则会出现错误,表明URL无效。最后也要确保什么都不做;存在(甚至不是空格)。

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


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

那么这是否意味着只能为池指定模式,如使用c3p0时。因为在使用c3p0连接池时,我找不到任何资源来指定模式。很抱歉,我从未使用过c3p0,所以我只想推测如何设置它。我认为“连接池”在这种情况下是指您正在使用的应用服务器:WebLogic、JBOSS、Glassfish、Tomcat、Jetty或,但愿如此,最后一个注意事项仅适用于db2。这是一个正确的答案,为我节省了很多时间。非常感谢。 jdbc:db2://SERVER_NAME:PORT/DATABASE:currentSchema=SCHEMA_NAME;