[flutter] 플러터 objectbox에서 버전 관리 기능을 사용하는 방법은?

ObjectBox는 데이터베이스 엔진으로서 Flutter 애플리케이션에서 사용할 수 있는 강력한 기능을 제공합니다. ObjectBox에 내장된 버전 관리 기능은 데이터베이스의 스키마 변경 및 업데이트를 용이하게 만들어줍니다. 아래는 ObjectBox에서 버전 관리 기능을 사용하는 방법에 대한 설명입니다.

  1. ObjectBox 및 objectbox_flutter 라이브러리 추가 프로젝트의 pubspec.yaml 파일에 다음과 같이 ObjectBox 및 objectbox_flutter 라이브러리를 추가합니다.
    dependencies:
      objectbox: ^0.14.0
      objectbox_flutter_libs: ^0.14.0
      objectbox_flutter: ^0.14.0
    
  2. objectbox.g.dart 생성 및 빌드 설정 변경 플러터 프로젝트의 최상위 디렉토리에서 터미널을 열고 다음 명령어를 실행하여 objectbox.g.dart 파일을 생성합니다.
    flutter packages pub run build_runner build
    

    생성된 objectbox.g.dart 파일은 ObjectBox에서 사용할 데이터 모델 클래스를 자동으로 생성해줍니다. 이후에는 objectbox.g.dart 파일을 사용하여 데이터베이스에 접근할 수 있습니다.

  3. 데이터베이스 버전 관리 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>();
        }
      }
      }
      
  4. 앱 시작 시 데이터베이스 초기화 및 업그레이드 앱이 시작될 때 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 문서를 참조하시기 바랍니다.

참조: