パッケージ io.realm

RealmMigration インターフェース


  • public interface RealmMigration
    RealmMigration クラスは、ある Realm スキーマから別の Realm スキーマへの移行を実行するために使用されます。 Realm のスキーマは、 RealmObjectを拡張するかRealmModelを実装するプロジェクト内のすべてのクラスによって定義されるため、これらのクラスに対する変更には移行が必要になります。

    以前の schemaVersion から最新のものへの移行をサポートするには、移行を作成するときに次のパターンが推奨されます。

     
     public class CustomMigration implements RealmMigration {
       \@Override
       public long migrate(DynamicRealm realm, long oldVersion, long newVersion) {
         RealmSchema schema = realm.getSchema();
    
         if (oldVersion == 0) {
           // Migrate from v0 to v1
           oldVersion++;
         }
    
         if (oldVersion == 1) {
           // Migrate from v1 to v2
           oldVersion++;
         }
    
         if (oldVersion < newVersion) {
             throw new IllegalStateException(String.format(Locale.US, "Migration missing from v%d to v%d", oldVersion, newVersion));
         }
       }
     }
     
     

    開発中に RealmObject クラスが頻繁に変更される可能性がある場合は、 Realm.deleteRealm(RealmConfiguration)を使用できます。 これにより、データベース ファイルが削除され、移行が不要になります。

    以下も参照してください。
    RealmConfiguration.Builder.schemaVersion(long), RealmConfiguration.Builder.migration(RealmMigration), RealmConfiguration.Builder.deleteRealmIfMigrationNeeded()
    • メソッドの詳細

      • 移行する

        無効化末尾(Device Realm Realm、 oldVersion、long newVersion
        このメソッドは、移行が必要な場合に呼び出されます。 メソッド全体は書き込みトランザクションにラップされているため、自分のトランザクションでラップすることなく、既存のオブジェクトを作成、更新、または削除することができます。
        パラメーター:
        realm - 移行を実行する Realm スキーマ。
        oldVersion - 移行開始時点での Realm のスキーマ バージョン。
        newVersion - 移行実行後の Realm のスキーマ バージョン。