【发布时间】:2019-05-24 04:10:04
【问题描述】:
我有一个 Room 数据库项目,它为数据库中的每个表提供一个 DAO 和一个存储库(不同数据源之间的中介)。需要记住很多文件和类名。
我想知道每个项目使用单个 Repository 和 DAO 类是否有缺点?
【问题讨论】:
标签: android android-room
我有一个 Room 数据库项目,它为数据库中的每个表提供一个 DAO 和一个存储库(不同数据源之间的中介)。需要记住很多文件和类名。
我想知道每个项目使用单个 Repository 和 DAO 类是否有缺点?
【问题讨论】:
标签: android android-room
没有这样的规则,您必须为每个表单独创建@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 表的数据库调用,我将拆分存储库并为每个表创建两个存储库。
总而言之,这些只是约定,以上只是建议的编码风格。
【讨论】: