Нет такого правила, что вы должны сделать отдельный @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
, я разделю репозитории и получу два репозитория по одному для каждой таблицы.
В общем, это всего лишь условные обозначения, а выше - просто рекомендуемый стиль кодирования.