[kotlin] 룸 데이터베이스 마이그레이션(Migration) 처리하기
안녕하세요! 이번에는 안드로이드 앱에서 룸(Room) 데이터베이스의 마이그레이션에 대해 알아보겠습니다. 룸은 안드로이드 어플리케이션의 데이터베이스를 쉽게 관리할 수 있도록 도와주는 라이브러리입니다.
마이그레이션은 데이터베이스 스키마를 업데이트하는 과정으로, 기존의 데이터베이스 스키마를 변경할 때 필요합니다. 이를 통해 앱을 업데이트하거나 새로운 데이터베이스 버전을 출시할 때 기존 데이터를 보존할 수 있습니다.
먼저, 마이그레이션을 처리하기 위해 데이터베이스 클래스에서 RoomDatabase.Callback
을 상속한 콜백 클래스를 만듭니다. 이 콜백 클래스에서 onMigrate
메서드를 오버라이드하여 마이그레이션 로직을 구현합니다.
@Database(entities = [YourEntity::class], version = 2)
abstract class YourDatabase : RoomDatabase() {
// ...
companion object {
private val MIGRATION_1_2: Migration = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
// 마이그레이션 로직 구현
}
}
val instance: YourDatabase by lazy {
Room.databaseBuilder(
context,
YourDatabase::class.java,
"your_database"
)
.addMigrations(MIGRATION_1_2)
.build()
}
}
}
위 코드에서 MIGRATION_1_2
는 데이터베이스 버전 1에서 2로의 마이그레이션을 나타내는 객체입니다. migrate
메서드 내에서 적절한 마이그레이션 로직을 구현하면 됩니다.
마지막으로, 데이터베이스를 생성할 때 addMigrations
메서드를 사용하여 마이그레이션을 추가합니다.
이렇게 하면 룸(Room) 데이터베이스에서 마이그레이션을 처리할 수 있게 됩니다. 안정적으로 데이터를 보존하면서 데이터베이스 스키마를 업데이트하는데 도움이 될 것입니다.
마이그레이션에 대한 자세한 내용은 룸(Room) 데이터베이스 문서를 참고하시기 바랍니다.