Java中的动态数据库连接

Java中的动态数据库连接,java,database,jdbc,properties-file,Java,Database,Jdbc,Properties File,我有两个不同的数据库,一个是MYSQL,另一个是Oracle。每个数据库都有一个不同名称和不同列名的表。现在我必须在单个java应用程序的每个数据库上执行一些db操作。假设MYSQL数据库有一个列Id、名称、,Dept和Oracle db的Student表中有StudentName和StudentDept。在不更改代码的情况下,如何管理2个db?如果我提到所有与db连接相关的dataconnection url、用户名,属性文件中的密码,但要执行查询,我必须在代码中提及表名和列名。如何在不更改代

我有两个不同的数据库,一个是MYSQL,另一个是Oracle。每个数据库都有一个不同名称和不同列名的表。现在我必须在单个java应用程序的每个数据库上执行一些db操作。假设MYSQL数据库有一个列Id、名称、,Dept和Oracle db的Student表中有StudentName和StudentDept。在不更改代码的情况下,如何管理2个db?如果我提到所有与db连接相关的dataconnection url、用户名,属性文件中的密码,但要执行查询,我必须在代码中提及表名和列名。如何在不更改代码的情况下动态管理它,以便将来添加任何具有不同表名和列名的新数据库,我只能在属性文件中添加新数据库,而无需触摸代码。请建议。

这可能不是最漂亮的,但有一种方法可以做到:

在应用程序启动时,解析属性文件以获取所有数据库连接。以您想要的方式存储它们…连接池列表、单个连接列表、连接字符串列表等等…这并不重要。 运行预定义的存储过程或选择查询以从步骤1中找到的每个数据库检索所有表名。在sybase中,您可以使用

从类型为'U'的sysobjects中选择名称

构建一个映射,其中键是表名,值是DB名称、连接、连接字符串,或用于从结果集2管理DB连接的任何内容。任何可以传递给DB连接管理器以确定它应该连接到哪个数据库的内容都将作为值使用

在代码中,当传递表名时,在映射中查找所需的DB 在步骤3中创建的映射中对返回的数据库信息执行查询
只要每个数据库中的表是不同的,这就可以工作。设置完成后,可以将新的DBs添加到属性文件中,并通过重新启动应用程序刷新缓存。但是,如果新的表/列被发送到代码中,如何在没有任何代码更改的情况下传递这些表/列?

您可以对JPA进行一些研究吗?“不更改代码”行很有趣。。。我想一定需要一些魔法,比如Wizard=new Wizard.getgandalsinstance。请查看中的方法