这主要是一个设计问题。我有2个实体Payment
和User
,具有一对一的关系。该API调用返回Payments
的每个Payment
包含User
列表。该款项显示在回收站视图,每一行包含来自Payment
和User
实体双方的信息。并从DB(使用间)接他们,我需要执行联接查询,返回两个实体的组合:
@Query("SELECT payment.*, user.* FROM payment INNER JOIN user ON payment.user_id = user.userId")
fun findPaymentsAndUsers(): List<PaymentAndUser>
data class PaymentAndUser(
@Embedded val payment: Payment,
@Embedded val user: User)
我的问题是如何创造我的仓库没有打破任何的清洁架构原则是什么?
PaymentRepository
,并从那里处理一切。每一个Android的清洁建筑样本,我发现有一个或两个实体,是完全独立的,没有加入查询或任何类型的分组,这是在现实生活中的应用完全不现实的。
有什么办法可以这样正确地执行?
至于我的理解SRP不说,每个库应该只处理自己的实体 - 而不是每个库应该只有“改变单一的原因。”
应该解决您的问题的模式是模式“工作单位”:只要创建一个“工作单位”库这正是处理这个查询。
事实上,在他的书,资料库的接口应该在某种程度上被设计的“干净架构”叔叔BLOB状态是方便其用户。它应该有“每次查询”的使用情况下,一个方法将提高对资源库。