領域模型

領域模型必須擴充套件 RealmObject 基類,它們定義底層資料庫的模式。

支援的欄位型別有 booleanbyteshortintlongfloatdoubleStringDatebyte[],連結到其他 RealmObjects 和 RealmList<T extends RealmModel>

public class Person extends RealmObject {
    @PrimaryKey //primary key is also implicitly an @Index 
                //it is required for `copyToRealmOrUpdate()` to update the object.
    private long id;

    @Index //index makes queries faster on this field
    @Required //prevents `null` value from being inserted
    private String name; 

    private RealmList<Dog> dogs; //->many relationship to Dog

    private Person spouse; //->one relationship to Person

    @Ignore
    private Calendar birthday; //calendars are not supported but can be ignored

    // getters, setters
}

如果向 RealmObject 新增(或刪除)新欄位(或者新增新的 RealmObject 類或刪除現有類),則需要進行遷移。你可以在 RealmConfiguration.Builder 中設定 deleteIfMigrationNeeded(),也可以定義必要的遷移。新增(或刪除)@Required@Index@PrimaryKey 註釋時也需要遷移。

必須手動設定關係,它們不是基於主鍵自動設定的。

從 0.88.0 開始,也可以在 RealmObject 類中使用公共欄位而不是私有欄位/ getter / setter。

如果該類也用 @RealmClass 註釋,也可以實現 RealmModel 而不是擴充套件 RealmObject

@RealmClass
public class Person implements RealmModel {
    // ...
}

在這種情況下,像 person.deleteFromRealm()person.addChangeListener() 這樣的方法被替換為 RealmObject.deleteFromRealm(person)RealmObject.addChangeListener(person)

限制是通過 RealmObject,只有 RealmObject 可以擴充套件,並且不支援 finalvolatiletransient 欄位。

重要的是,只能在事務中修改託管的 RealmObject 類。一個管理 RealmObject 不能線上程之間傳遞。