모바일 앱(안드로이드)
Room Database Migration: 칼럼 추가와 데이터 타입 변경
Billcorea
2024. 10. 19. 15:28
반응형
Room Database Migration: 칼럼 추가와 데이터 타입 변경
안녕하세요! 이번 포스트에서는 Room 데이터베이스에서 마이그레이션을 통해 칼럼을 추가하고 데이터 타입을 변경하는 방법에 대해 알아보겠습니다. 이 포스트를 통해 데이터베이스 마이그레이션을 원활하게 처리하는 방법을 배우실 수 있습니다.
1. 기본적인 칼럼 추가
새로운 칼럼을 추가할 때는 마이그레이션 클래스를 작성하여 ALTER TABLE SQL 명령어를 사용합니다. 예를 들어, new_column이라는 INTEGER 칼럼을 example_table에 추가하는 방법은 다음과 같습니다:
kotlin
import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE example_table ADD COLUMN new_column INTEGER NOT NULL DEFAULT 0")
}
}
2. Boolean 칼럼 추가
Room에서는 Boolean 타입을 직접 지원하지 않기 때문에, INTEGER 타입을 사용하여 0과 1로 표현합니다. deviceInfo 테이블에 deviceSelected라는 Boolean 칼럼을 추가하는 예제는 다음과 같습니다:
kotlin
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE deviceInfo ADD COLUMN deviceSelected INTEGER NOT NULL DEFAULT 0")
}
}
3. 데이터베이스 빌더에 마이그레이션 추가
데이터베이스 빌더에 마이그레이션을 추가하여 데이터베이스 인스턴스를 생성합니다:
kotlin
val db = Room.databaseBuilder(applicationContext, AppDatabase::class.java, "database-name")
.addMigrations(MIGRATION_1_2)
.build()
4. 데이터베이스 버전 업데이트
@Database 어노테이션에서 데이터베이스 버전을 업데이트합니다:
kotlin
@Database(entities = [DeviceInfo::class], version = 2)
abstract class AppDatabase : RoomDatabase() {
abstract fun deviceInfoDao(): DeviceInfoDao
}
5. 전체 마이그레이션 과정 요약
위 단계를 통해 데이터베이스 마이그레이션을 원활하게 처리할 수 있습니다. 새로운 칼럼을 추가하거나 데이터 타입을 변경할 때는 항상 주의 깊게 작업해야 하며, 마이그레이션 로직을 정확하게 작성하는 것이 중요합니다.
반응형