我有一个UserRepository来搜索数据库(solr,elasticsearch,其他......)我在我的SQL数据库中有这个用户数据(MySQL,PostgreSQL,其他......),我的问题是我把它放在哪个地方?在存储库中?还是其他抽象(服务,控制器)?
我的例子是Java,但我将它应用于java(Spring)和PHP:
public interface UserRepository extends SolrCrudRepository<User, String> {}
答案 0 :(得分:1)
如果我理解你,你就做对了
Repository Pattern可让您抽象数据来自 。所以你使用案例/控制器/不需要关心的那些
但是存储库不需要知道有关如何检索该数据的详细信息。这是DAO (Data Access Object)的任务。 DAO封装了有关数据存储方式的详细信息
因此,您的存储库可以有几个DAO访问多个数据源并协调它们。 e.g。
fun_run.grouped_df <- function(data, var) {
var <- rlang::enquo(var)
tidyr::nest(data) %>% dplyr::mutate(data = purrr::map(.x = data, var = !!var,
.f = fun_run)) %>% tidyr::unnest()
}
检索用户数据myDAO1
中没有用户数据正在提取,则使用myDAO1
获取其他数据源