【发布时间】:2015-10-01 10:56:13
【问题描述】:
目前,我们正在为要保存在 Mapper 类中的每个 RealmObject 创建一个新实例。
@Override
public Person toRealmObject(Realm realm, PersonXML businessObject) {
Person person = new Person();
person.setId(businessObject.getId());
person.setName(businessObject.getName());
return person;
}
当我们创建一个新的时,我们会将它收集到一个列表中。
@Override
public void populateRealmListWithMappedModel(Realm realm, RealmList<Person> realmList, PersonsXML personXML) {
for(PersonXML personXML : personXML.getPersons()) {
realmList.add(personMapper.toRealmObject(realm, personXML));
}
}
/*next the following happens:*/
//realm.beginTransaction();
//personRepository.saveOrUpdate(realm, list);
//realm.commitTransaction();
然后我们保存列表。
@Override
public RealmList<T> saveOrUpdate(Realm realm, RealmList<T> list) {
RealmList<T> realmList = new RealmList<T>();
for(T t : realm.copyToRealmOrUpdate(list)) {
realmList.add(t);
}
return realmList;
}
问题是,以下是否可能,我是否可以重复使用相同的 Person 对象并更改其值以指定 Realm 我想要保存的对象,但不是有与之关联的整个对象?
就像这样:
@Override
public Person toRealmObject(Realm realm, PersonXML businessObject, Person person) {
person.setId(businessObject.getId());
person.setName(businessObject.getName());
return person;
}
然后
@Override
public void writeObjectsToRealm(Realm realm, PersonsXML personXML) {
realm.beginTransaction();
Person person = new Person();
for(PersonXML personXML : personXML.getPersons()) {
person = personMapper.toRealmObject(realm, personXML, person));
personRepository.saveOrUpdate(person);
}
realm.closeTransaction();
}
这个方法在哪里
@Override
public T saveOrUpdate(Realm realm, T t) {
return realm.copyToRealmOrUpdate(t);
}
我之所以这样问,是因为重写架构以使用以下内容将需要重写我拥有的每个 populateRealmListWithMappedModel() 方法,如果它不起作用,那就有点担心了。所以我很好奇它在理论上是否有效。
基本上简短的问题是,如果我在 realmObject 上调用 copyToRealmOrUpdate(t),并更改其 id 和数据,并一次又一次地保存相同的对象,写入事务会成功吗?
【问题讨论】: