안녕하세요. 이번 포스트에서는 Flutter 앱에서 데이터베이스 마이그레이션을 수행하는 방법에 대해 알아보겠습니다. 데이터베이스 마이그레이션이란 데이터베이스 스키마의 변경이나 업데이트에 따른 데이터 이관 작업을 말합니다. Flutter 앱에서는 주로get_it
을 활용하여 데이터베이스 인스턴스를 관리하고, moor
패키지를 사용하여 데이터베이스 마이그레이션을 수행합니다.
get_it 이해
먼저, get_it
은 Flutter 앱에서 의존성 주입을 위한 패키지입니다. 이를 사용하면 앱 전체에서 상태를 유지할 수 있는 인스턴스를 관리할 수 있습니다. 데이터베이스 인스턴스 또한 get_it
을 통해 한 번 만들어두면 앱 전역에서 사용할 수 있습니다.
final locator = GetIt.instance;
void setupLocator() {
locator.registerLazySingleton(() => MyDatabase());
}
위 예시에서 MyDatabase
는 데이터베이스 클래스입니다.
moor를 사용한 데이터베이스 마이그레이션
다음으로, moor
패키지는 Flutter 앱에서 간단하게 SQLite 데이터베이스를 다룰 수 있도록 도와주는 패키지입니다. moor
를 활용하여 데이터베이스 마이그레이션을 수행하려면 아래와 같이 진행합니다.
class MyDatabase extends _$MyDatabase {
MyDatabase(QueryExecutor e) : super(e);
@override
int get schemaVersion => 2;
@override
MigrationStrategy get migration => MigrationStrategy(
onCreate: (Migrator m) {
return m.createAll();
},
onUpgrade: (Migrator m, int from, int to) async {
if (from == 1) {
// perform migration
}
}
);
}
위 예시에서 schemaVersion
은 현재 데이터베이스의 버전을 나타내며, migration
필드에서 onUpgrade
콜백 메서드를 구현하여 마이그레이션 작업을 수행할 수 있습니다.
결론
Flutter 앱에서 get_it
과 moor
패키지를 활용하여 데이터베이스 마이그레이션을 간단히 수행할 수 있습니다. 앱의 데이터베이스 스키마가 변경되어도 안정적으로 데이터 이관 작업을 관리할 수 있으며, get_it
을 통해 데이터베이스 인스턴스를 효율적으로 관리할 수 있습니다. 이를 통해 앱의 데이터베이스 관련 작업을 보다 효율적으로 처리할 수 있습니다.
이상으로, get_it을 활용한 데이터베이스 마이그레이션에 대해 알아보았습니다. 감사합니다.