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

时间:2018-12-25 13:35:04

标签: android android-room

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

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

1 个答案:

答案 0 :(得分:3)

没有这样的规则,您不必为每个表分别设置@mydecorator('somearg') decoratedmethod(arg1){ //.. } 。您可以创建一个包含所有数据库查询的Dao类。

@Dao

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

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

例如,如果我只有@Dao interface MyDao{ @Query("SELECT * FROM Student") fun getStudents(): List<User> @Query("SELECT * FROM Professors") fun getProfs(): List<User> } 表中的一个数据库调用和User表中的一个数据库调用,则看不到每个表有两个单独的存储库。但是另一方面,如果我从Post表中有10个数据库调用,而从User表中有10个以上的数据库调用,我将拆分存储库,每个表有两个存储库。

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