【发布时间】:2014-12-12 10:46:49
【问题描述】:
假设所有客户端数据都存储在其自己的数据库/目录中,并且所有此类数据库都存储在单个 RDBMS(客户端数据)中。主数据(例如客户端,...)保存在另一个 RDBMS(主数据)中。我们如何通过JdbcTemplate动态访问客户端数据RDBMS中的特定数据库?
为客户端数据 RDBMS 中的每个数据库定义 DataSource,然后按照建议动态选择一个 here 对我们来说不是一个选项,因为数据库是动态创建和销毁的。
我基本上需要 JDBC 的 Connection.setCatalog(String catalog) 之类的东西,但我在 Spring JdbcTemplate 中没有找到类似的东西。
【问题讨论】:
-
也许您可以用
DelegatingDataSource包装数据源以在getConnection()中调用setCatalog()。 -
嗯,可能某种包装器可能是解决方案。现在的问题是如何将相应的目录传播到这样的包装器。无论如何,好点。
-
关于 jdbcTemplate 创建:
new JdbcTemplate(new MyDelegatingDS(dataSource, "catalogName"));类似的东西 -
是的,当然,我的意思是在整个解决方案的上下文中,但它超出了问题本身的范围。无论如何,您不想将您的 cmets 总结为答案吗?我认为它值得被接受,因为目前可能没有比
DataSourcewrapper 更好的解决方案了。 -
您使用的是哪个 DBMS?
标签: java mysql spring-data spring-jdbc jdbctemplate