[flutter] 플러터 objectbox에서 버전 관리 기능을 사용하는 방법은?
ObjectBox는 데이터베이스 엔진으로서 Flutter 애플리케이션에서 사용할 수 있는 강력한 기능을 제공합니다. ObjectBox에 내장된 버전 관리 기능은 데이터베이스의 스키마 변경 및 업데이트를 용이하게 만들어줍니다. 아래는 ObjectBox에서 버전 관리 기능을 사용하는 방법에 대한 설명입니다.
- ObjectBox 및 objectbox_flutter 라이브러리 추가
프로젝트의 pubspec.yaml 파일에 다음과 같이 ObjectBox 및 objectbox_flutter 라이브러리를 추가합니다.
dependencies: objectbox: ^0.14.0 objectbox_flutter_libs: ^0.14.0 objectbox_flutter: ^0.14.0
- objectbox.g.dart 생성 및 빌드 설정 변경
플러터 프로젝트의 최상위 디렉토리에서 터미널을 열고 다음 명령어를 실행하여 objectbox.g.dart 파일을 생성합니다.
flutter packages pub run build_runner build
생성된 objectbox.g.dart 파일은 ObjectBox에서 사용할 데이터 모델 클래스를 자동으로 생성해줍니다. 이후에는 objectbox.g.dart 파일을 사용하여 데이터베이스에 접근할 수 있습니다.
-
데이터베이스 버전 관리 ObjectBox는 데이터베이스의 스키마 변경을 관리하기 위해 버전 번호를 사용합니다. 데이터 모델 클래스를 업데이트하면서 ObjectBox를 사용하기 전에 다음과 같은 단계를 따라야 합니다.
- 데이터 모델 클래스의 버전을 지정합니다.
@Entity() class MyEntity { int id; String name; MyEntity({this.id, this.name}); }
- 데이터 모델 클래스의 버전을 objectbox.g.dart 파일에 적용합니다.
@Entity() class MyEntity extends BaseEntity { @Id(assignable: true) int id; String name; MyEntity({this.id, this.name}); @override void applyToDb(Database db, int version) { // 변경된 스키마에 따른 처리를 수행합니다. if (version == 1) { db.createObjectStore<MyEntity>(); } } }
- 데이터 모델 클래스의 버전을 지정합니다.
- 앱 시작 시 데이터베이스 초기화 및 업그레이드
앱이 시작될 때 objectbox 초기화 코드를 추가하여 데이터베이스의 버전을 확인하고 필요한 경우 업그레이드를 수행합니다.
void main() { runApp(MyApp()); runObjectBoxMigration(); // ObjectBox 초기화 및 스키마 업그레이드 } Future<void> runObjectBoxMigration() async { ObjectBoxModel model = ObjectBoxModel(); int lastSchemaVersion = await getLastSchemaVersion(); Store store = await openStore(model, lastSchemaVersion); Upgrade(upgrade: (Db db, int oldVersion, int newVersion) async { // 업그레이드 로직 구현 }).run(store, lastSchemaVersion + 1, model.lastEntityId); }
위의 코드에서
runObjectBoxMigration
함수는 데이터베이스를 초기화하고 마이그레이션을 수행하는 역할을 합니다.Upgrade
클래스는 업그레이드 로직을 구현하는데 사용됩니다. 이 로직에서는 이전 버전과 새 버전 사이의 변경 사항을 처리할 수 있습니다.
이제 ObjectBox에서 버전 관리 기능을 사용하는 방법에 대해 알게되었습니다. 이를 통해 데이터베이스의 스키마 변경에 편리하게 대응할 수 있습니다. 자세한 내용은 ObjectBox 문서를 참조하시기 바랍니다.
참조: