Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.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
Java 实现单个功能以基于配置在不同数据库中存储数据的最佳方法是什么?_Java_Database_Architecture - Fatal编程技术网

Java 实现单个功能以基于配置在不同数据库中存储数据的最佳方法是什么?

Java 实现单个功能以基于配置在不同数据库中存储数据的最佳方法是什么?,java,database,architecture,Java,Database,Architecture,我想用java实现一个示例,它从某个配置文件中读取配置,在此基础上,当用户与页面交互时,应用程序将根据配置参数在MySql或Oracle上存储一些数据。我们如何以最高效、最智能的方式实现此示例? 为数据存储创建一个接口,并在应用程序中使用它 创建一个抽象类来实现这个接口,并实现MySQL和Oracle的共同功能 创建两个类,一个用于MySQL,一个用于Oracle,用于实现特定于数据库的内容 在配置中,指定要使用的类(MySQL或Oracle数据库类) 也许可以使用类似Hibernate的东西,

我想用java实现一个示例,它从某个配置文件中读取配置,在此基础上,当用户与页面交互时,应用程序将根据配置参数在MySql或Oracle上存储一些数据。我们如何以最高效、最智能的方式实现此示例?

  • 为数据存储创建一个接口,并在应用程序中使用它
  • 创建一个抽象类来实现这个接口,并实现MySQL和Oracle的共同功能
  • 创建两个类,一个用于MySQL,一个用于Oracle,用于实现特定于数据库的内容
  • 在配置中,指定要使用的类(MySQL或Oracle数据库类)

也许可以使用类似Hibernate的东西,将数据库抽象出来。

实际上,使用Hibernate或JPA可以将数据库差异抽象出来

使用像Spring或Guice这样的依赖注入框架,您可以创建两个服务实例,它们只在注入的持久性管理器中有所不同


在这种情况下,您可以为这两个数据库保留几乎100%的相同代码,从而保证它们不会随着时间的推移而失去同步。

继续@Sjoerd的回答:

有什么工具或开源库可以帮助您吗

Hibernate或其他一些JPA实现是最好的选择

或者,Spring有一些JDBC支持类来完成一些工作。。。如果您能够找出各种备选方案中的哪一个与您的需求非常匹配

不幸的是,实现一个针对多个数据库后端的应用程序是一项艰巨的工作,无论您如何做。根据我的经验,您通常会得到一个性能不如针对一个且仅针对一个数据库后端的解决方案的解决方案


如果我有办法的话,拒绝实现SQL标准的数据库供应商将首先面临挑战。。。革命来了。

好吧,有什么有用的工具或开源库吗?nhibernate将是一个or/M,我需要Hibernate的帮助吗?在Java中使用Hibernate,而不是nhibernate。你的问题到底是什么?您不想使用Hibernate的OR映射功能?是的,我确实想使用它,但是使用Hibernate,是否可以动态选择数据库(mysql、oracle、sqlLite)?我只知道您可以在配置中更改它。但我不认为您可以在运行时更改数据库。请看一看舒尔的文档。我认为这篇博文可能会有所帮助: