【问题标题】:Single or multiple DAO and Repository in Android Room database project?Android Room数据库项目中的多个DAO和存储库?
【发布时间】:2019-05-24 04:10:04
【问题描述】:

我有一个 Room 数据库项目,它为数据库中的每个表提供一个 DAO 和一个存储库(不同数据源之间的中介)。需要记住很多文件和类名。

我想知道每个项目使用单个 Repository 和 DAO 类是否有缺点?

【问题讨论】:

    标签: android android-room


    【解决方案1】:

    没有这样的规则,您必须为每个表单独创建@Dao。您可以创建一个包含所有数据库查询的 Dao 类。

    @Dao
    interface MyDao{
        @Query("SELECT * FROM Student")
        fun getStudents(): List<User>
    
        @Query("SELECT * FROM Professors")
        fun getProfs(): List<User>
    }
    

    但是按照惯例,您为每个实体创建单独的 Dao。这样你的代码就会被组织起来,仅此而已。如果您在同一个 Dao 中有一堆不相关的查询,则很难查看您的代码。

    对于存储库,我会有不同的方法。虽然没有这样的规则,即您必须使用单独的存储库或单个存储库,但我会在我认为有必要的地方使用两者。

    例如,如果我只有一个来自User 表的数据库调用和一个来自Post 表的数据库调用,我认为每个表都有两个单独的存储库没有意义。因此,在这种情况下,我只会制作单个存储库。但另一方面,如果我有 10 个来自 User 表的数据库调用和 10 个来自 Post 表的数据库调用,我将拆分存储库并为每个表创建两个存储库。

    总而言之,这些只是约定,以上只是建议的编码风格。

    【讨论】:

    • 存储库怎么样,我对它的想法有点困惑。对于不同的实体,我应该有不同的存储库吗?
    • @jackz314 我刚刚更新并提供了有关存储库的更多信息。
    • 在研究了它的概念之后,我现在有点明白了。谢谢您的意见。
    猜你喜欢
    • 2020-09-15
    • 2018-02-20
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    相关资源
    最近更新 更多