我有一个Room数据库项目,该项目为数据库中的每个表提供一个DAO和一个存储库(不同数据源之间的介体)。要记住的文件和类名很多。
我想知道每个项目使用单个存储库和DAO类是否有缺点?
答案 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个以上的数据库调用,我将拆分存储库,每个表有两个存储库。
总而言之,这些只是约定,而以上只是建议的编码样式。