use*_*404 5 java android android-room
如果我有一个包含两个表/实体(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 调用以检索要下载的图像列表或数据库调用以从数据库检索列表(取决于互联网连接)。这些图像也必须下载。同样,图像可以从本地缓存加载或通过 API 下载。然后 ViewModel 将它们包装在 View 所需的模型中,仅此而已。
正如您通过这个简单的示例所看到的,存储库本身仅执行请求。本地文件系统、数据库或 API。它可以有类似getImageListFromDb和getImageListFromAPI的功能。这样使用它的类只需决定何时使用什么。
| 归档时间: |
|
| 查看次数: |
339 次 |
| 最近记录: |