Один на несколько DAO и репозиторий в проекте базы данных Android Room? - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть проект базы данных Room, в котором есть DAO и репозиторий (посредник между различными источниками данных) для каждой таблицы в базе данных.Это много файлов и имен классов, которые нужно запомнить.

Я хотел бы знать, есть ли недостатки в использовании одного репозитория и класса DAO для проекта?

1 Ответ

0 голосов
/ 27 декабря 2018

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

В общем, это всего лишь условные обозначения, а выше - просто рекомендуемый стиль кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...