Практический обзор миграции с SQLite в комнату

В новом проекте, над которым мы работаем, мы делаем огромную миграцию с SQLite на Room, мы обычно всегда используем Realm, но мы решаем попробовать Coroutines и Room, чтобы справиться с этой огромной миграцией с нашей стороны. , но я обнаружил, что иногда вам нужно немного больше информации о том, как обрабатывать некоторые части кода. Итак, начнем с миграций:

Миграции проще, чем в чистом SQLite, представьте, что у нас есть этот объект класса Data для нашей новой реализации Room с двойником, но в SQLite

Миграция и база данных номеров

Все классы, помеченные знаком Database, должны расширять этот класс. RoomDatabase обеспечивает прямой доступ к базовой реализации базы данных. Любой запрос, кроме миграции, никогда не должен выполняться на этом уровне реализации, для этого вы можете использовать Dao.. Миграция необходима, если существует какая-либо база данных, которую вы хотите сохранить для своих пользователей, это обрабатывается с помощью Room, Rooms предлагает оболочка миграции, подобная следующей:

Миграция: SELECT и INSERT

Все сущности, которые потребуются вашей базе данных, должны быть добавлены в вышестоящую часть абстрактного класса.
Мы можем составить пошаговое руководство по миграции:
1. Вам нужно создать таблицу с вашим объектом Room с другим именем
2. Скопируйте всю информацию из таблицы SQLite в таблицу комнаты
3. Перетащите таблицу в SQLite
4. Переименуйте таблицу , чтобы конечный объект имел то же имя, что и таблица в SQLite

Внешние ключи

На последнем шаге мы обрабатываем копирование и создание таблицы, мы используем INSERT или REPLACE в выбранной таблице. Но этого пока недостаточно, для нашей выбранной сущности нам нужно создать внешние ключи над UpdatedTableProduct, если мы этого не сделаем, мы столкнемся с этим исключением: Ошибка ограничения внешнего ключа, поэтому, когда мы создадим нашу таблицу, мы добавим это:

Индексы

Индексы в вашей таблице важны для многореляционных таблиц, для более эффективных запросов помните, что ключ к тому, чтобы сделать это действительно эффективным, состоит в том, чтобы не иметь много индексов, и эти индексы не должны меняться со временем, потому что это повлияет на эффективность, для создания индексов для нашей сущности:

Добавить новый столбец

Представьте, что ваша структура столбцов изменилась, возможно, вы добавите новый столбец, чтобы сообщить вам, просмотрел ли пользователь детали продукта, поэтому вам нужно сначала изменить свою таблицу в SQLite:

И это будет наш окончательный результат, со всеми этими изменениями у вас будет окончательная миграция, которая будет успешной, без исключений, помните, что если у вас больше одной таблицы, вы, вероятно, собираетесь написать 4 шага для обработки миграции. .

Если вам нужна помощь, я всегда рад помочь, вы можете найти меня здесь:
Средний: https://medium.com/@dinorahto
StackOverflow: https: // stackoverflow. ru / users / 4613259 / dinorah-tovar

Удачного кодирования! 👩🏻‍💻