Android 领域模型

示例

领域模型必须扩展RealmObject基类,它们定义基础数据库的模式。

支持的字段类型boolean,byte,short,int,long,float,double,String,Date,byte[],链接到其他RealmObjectS和RealmList<T extends RealmModel>。

public class Person extends RealmObject {
    @PrimaryKey //主键也隐式地是一个@Index 
                //copyToRealmOrUpdate()必须更新该对象。
    private long id;

    @Index //索引使查询速度更快
    @Required //防止插入“ null”值
    private String name; 

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

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

    @Ignore
    private Calendar birthday; //日历不受支持,但可以忽略

    // 吸气剂,二传手
}

如果在RealmObject中添加(或删除)新字段(或者添加新的RealmObject类或删除现有的类),则需要进行迁移。你可以设置deleteIfMigrationNeeded()你的RealmConfiguration.Builder,或定义必要的迁移。添加(或删除)@Required,或@Index或@PrimaryKey注释时,也需要迁移。

关系必须手动设置,它们不是基于主键自动建立的。

从0.88.0开始,还可以在RealmObject类中使用公共字段代替私有字段/获取器/设置器。

如果类也用注释,也可以实现RealmModel而不是扩展。RealmObject@RealmClass

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

在这种情况下,诸如或的方法将被替换为和。person.deleteFromRealm()person.addChangeListener()RealmObject.deleteFromRealm(person)RealmObject.addChangeListener(person)

限制是由RealmObject,只RealmObject可以扩展,并且不存在用于支持final,volatile和transient领域。

重要的是,只能在事务中修改托管RealmObject类。一个管理RealmObject不能在线程之间传递。