Миграция базы данных помещений — это процесс изменения схемы базы данных с течением времени при сохранении существующих данных. В контексте разработки Android Room – это популярная библиотека, которая обеспечивает уровень абстракции поверх SQLite, упрощая работу с базами данных.
Вот несколько методов миграции базы данных Room, а также примеры кода:
-
Использование метода
fallbackToDestructiveMigration:Room.databaseBuilder(context, AppDatabase.class, "my-database") .fallbackToDestructiveMigration() .build();Этот метод удаляет существующую базу данных и воссоздает ее с нуля, когда требуется миграция. Это простой подход, но приводит к потере данных.
-
Использование метода
addMigrations:Room.databaseBuilder(context, AppDatabase.class, "my-database") .addMigrations(MIGRATION_1_2, MIGRATION_2_3) .build();При этом подходе вы определяете классы миграции, которые расширяют
Migration, и указывают необходимые изменения между различными версиями базы данных. Вот пример класса миграции:static final Migration MIGRATION_1_2 = new Migration(1, 2) { @Override public void migrate(SupportSQLiteDatabase database) { database.execSQL("ALTER TABLE my_table ADD COLUMN new_column TEXT"); } };Эта миграция добавляет новый столбец в существующую таблицу.
-
Использование
RoomDatabase.Callback:Room.databaseBuilder(context, AppDatabase.class, "my-database") .addCallback(new RoomDatabase.Callback() { @Override public void onCreate(SupportSQLiteDatabase db) { // Handle initial database creation } @Override public void onMigrate(SupportSQLiteDatabase db, int oldVersion, int newVersion) { // Handle migration from oldVersion to newVersion } }) .build();При таком подходе вы можете переопределить методы
onCreateиonMigrateRoomDatabase.Callbackдля управления созданием и миграцией базы данных соответственно.