java - 多个数据库的 Dao 接口(interface)?

标签 java spring rest software-design

有一种在DAO实现之前创建DAO接口(interface)的模式。我在 google 上搜索了这种模式的优点,其中一个引人注目的点是支持多个数据库。

现在,我可以理解的是,这里的多个数据库意味着不同的数据库引擎而不是多个数据源。显然,多个数据源不应该影响 DAO 接口(interface)如何实现 DAO。

我的问题是在什么情况下我们可能需要支持多个数据库引擎来满足相同的数据?此外,如果出现此类需求,如何管理REST端点以支持不同的数据库?

他们会像这样吗? /db1/courses//db2/courses ?如果我在这个问题中做出了任何错误的假设或陈述,请纠正我。

最佳答案

我只是想添加我对开始 Spring 开发的回答。这是一开始没有意义的事情之一。你最终会问自己:

  • 只有 1 个数据库,所以这没有意义,为什么要这样做?
  • 当只有 1 个实现时,我为什么要定义一个接口(interface)?

但实际上,这些都不是您这样做的真正原因。但这是惯例和模式,这种风格正是人们所习惯的,随着时间的推移你会更喜欢它。还有一些其他原因:

  • Spring Data - 这是使用实体管理器的替代方法,您只需定义接口(interface),Spring 将实际创建为您实现存储库功能的 bean。
  • 设计 - 确保定义一个接口(interface)将有助于保持您的存储库的本质。
  • 更容易的模拟 - 尽管可以说您仍然可以在 Spring 中执行此操作,而无需定义接口(interface),但当您想用另一个接口(interface)替换实现时,它仍然更干净一些。

但实际上这只是 Spring 方式,如果你这样做,人们会发现更容易理解你的代码。

关于java - 多个数据库的 Dao 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53240990/

相关文章:

rest - 是否可以在不发出两个请求的情况下编写Firebase服务器时间戳?

java - Java持久化继承中的序列号

java - 浏览器不会将我重定向到 Twitter 进行授权

java - 如何从两个不同的循环将数据获取到构造函数中

java - 如何避免在 spring 数据 jpa 更新之前选择

java - Spring MVC 未填充模型属性

http - REST API、HTTP 动词和访问日志

android - AsynTask 中的文件类型错误

java - 在 Java 中编写 unicode 字符?

java - Java 代码中出现语法错误 : Cannot cast from Object to int