패키지 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()
    • 메서드 세부 정보

      • 마이그레이션

        void migrate​(DynamicRealm 영역, long oldVersion, long newVersion)
        마이그레이션이 필요한 경우 이 메서드가 호출됩니다. 전체 메서드가 쓰기 트랜잭션(write transaction)으로 래핑되므로 자체 트랜잭션에서 래핑하지 않고도 기존 객체를 생성, 업데이트 또는 삭제할 수 있습니다.
        매개변수:
        realm - 마이그레이션을 수행할 Realm 스키마입니다.
        oldVersion - 마이그레이션 시작 시점의 Realm의 스키마 버전입니다.
        newVersion - 마이그레이션 실행 후 Realm의 스키마 버전입니다.