gpt4 book ai didi

java - 搜索服务失败时的设计模式

转载 作者:行者123 更新时间:2023-12-02 12:26:21 25 4
gpt4 key购买 nike

我有一个 UserRepository 来搜索数据库(solr、elasticsearch、其他...),并且我的 SQL 数据库(MySQL、PostgreSQL、其他...)中有此用户数据,我的问题是我应该把它放在哪里?在存储库中?或者其他抽象(服务、 Controller )?

我的示例是用 Java 编写的,但我会将其应用于 java (Spring) 和 PHP:

public interface UserRepository extends SolrCrudRepository<User, String> {}

最佳答案

如果我理解你,你就做对了

Repository Pattern让您抽象数据的来源。所以你使用案例/ Controller /任何不需要关心的东西

但是存储库不需要知道有关如何检索该数据的详细信息。这是 DAO (Data Access Object) 的任务。 DAO 封装了有关如何存储数据的详细信息

因此,您的存储库可以拥有多个访问多个数据源并协调它们的 DAO。例如

  1. 使用 myDAO1 检索用户数据
  2. 如果 myDAO1 正在提取的数据源中没有用户数据,则使用 myDAO2 提取另一个数据源
  3. 继续下去,直到存储库找到所需的数据(可能实现 Chain of responsability )或返回 null 或引发异常或执行您定义的任何操作

关于java - 搜索服务失败时的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45465415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com