Android Room数据库项目中的多个DAO和存储库中的一个?

Ado*_*els 3 android android-room

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

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

mus*_*off 5

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

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

    @Query("SELECT * FROM Professors")
    fun getProfs(): List<User>
}
Run Code Online (Sandbox Code Playgroud)

但是按照约定,您需要为每个实体单独创建一个Dao。这样,您的代码将井井有条。如果同一Dao中有许多无关的查询,则很难检查代码。

对于存储库,我将采用不同的方法。尽管没有这样的规则,您必须使用单独的存储库或单个存储库,但是我认为在需要的地方都可以使用两者。

例如,如果我只有一个来自User表的数据库调用和一个来自Post表的数据库调用,那么我看不到每个表都有两个单独的存储库。因此,在这种情况下,我只会制作单个存储库。但是另一方面,如果我从User表中有10个数据库调用,从表中有10 个以上的数据库调用Post,我将拆分存储库,并为每个表有两个存储库。

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

  • 在研究了它的概念之后,我现在有点明白了。感谢您的输入。 (2认同)