Java-Android Studio Room Persistence-每个实体都应有单独的DAO,这对存储库类有何影响?

如果我有一个包含两个表/实体(A和B)的数据库(DB),
我应该为每个实体制作DAO吗? (即DAO_A和DAO_B),还是为包含这两个表的整个数据库创建DAO?

 

然后关于存储库,这将是整个数据库(整个DB)的存储库,还是仅包含我想要的类的相关DAO(即DAO_A和DAO_B)的数据库存储库.
(真的,我想我想问的是数据库将具有多个存储库还是只有一个存储库,并且每个实体都必须具有自己的DAO,或者我可以创建一个通用D

最佳答案

我会说,每个实体都有自己的DAO.为什么?因为您正确地将它们分开.

 

假设您有一个包含实体A和实体B的DAO.在您的存储库中,您可能只需要实体A,那么该DAO也使用实体B毫无意义.如果发生情况,则需要两个实体,只需使用两个DAO.使用单独的DAO的另一个原因是,您不知道如何正确耦合实体.您将如何决定将哪些实体耦合到DAO中?是的,您可以根据使用它的存储库来决定这一点,但这可能导致代码重复(两个DAO使用相同的实体,但是每个DAO都使用第二个实体-每个DAO都不同).

关于您的第二个问题:我认为这取决于您的体系结构应如何精确建模存储库.

例如,当使用MVVM时:

要求:您有一个活动,仅显示从某处获取的图像列表.

然后,您的ViewModel将提供类似getAllImageModels之类的功能.每个ImageModel都将包含一个图像(将显示).在此函数内部,存储库称为API调用以检索要下载的图像列表,或者称为数据库调用以从数据库中检索列表(取决于Internet连接).这些图像也必须下载.同样,可以从本地缓存中加载图像,也可以通过API下载图像.然后,ViewModel将它们包装在View所需的所需模型中,仅此而已.

从这个简单的示例可以看到,存储库仅执行请求.本地文件系统,数据库或API.它可能具有像getImageListFromDb和getImageListFromAPI这样的函数.这样,使用它的类就必须决定何时使用什么.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值