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