搜索服务失败时的设计模式
问题描述:
我有一个UserRepository来搜索数据库(solr,elasticsearch,others ...),并且我的SQL数据库中有这个用户数据(MySQL,PostgreSQL,others ...),我的问题是我把这个放在什么地方?在储存库?或其他抽象(服务,控制器)?搜索服务失败时的设计模式
我的例子是在Java中,但我会将此到Java(春季)和PHP:
public interface UserRepository extends SolrCrudRepository<User, String> {}
答
如果我理解你,你正在做正确的事情
的Repository Pattern让你抽象其中的数据来自。因此,您使用案例/控制器/不需要关心的任何内容
但是存储库不需要知道如何检索该数据的详细信息。这是DAO (Data Access Object)的任务。 DAO封装了有关数据如何存储的详细信息
因此,您的存储库可以具有多个访问多个数据源并对其进行协调的DAO。例如
- 使用
myDAO1
检索用户数据 - 如果在数据源
myDAO1
被获取,然后使用myDAO2
来获取其他数据源 - 一直走,直到库找到所需要的数据没有用户数据(也许执行Chain of responsability)或返回null或抛出异常或执行任何您定义的操作
*您的问题是*什么*请编辑你的答案,让每个人都明白你的意思 – Lino
@Lino我把这个放在什么地方?在储存库?为此创建一个服务? – Renan