我有一个包含此对象的列表:
public class Foo {
public String title;
public String subject;
}
例如:List<Foo> mFoo = new ArrayList<Foo>();
我的数据库中有一个具有相同名称和相同属性的表。
此列表包含大约1000个对象。第一次处理此列表时,所有对象都将存储在数据库中。
接下来,List的某些对象将会更改,或者某些新对象也会添加它。这是问题所在。
如何更新并将新对象添加到数据库以避免在其他列表中加载数据库中的所有存储对象,然后比较两个列表?
它是否存在某种最小化访问数据库的方式? (我不想每次加载1000个对象)
我从解析外部源数据(html代码)的方法中获取List<Foo> mFoo
。然后我将对象作为Foo保存在数据库中。
当我保存一个对象时,我得到一个id;
public class Foo {
private String id;
public String title;
public String subject;
}
每次执行方法时,我都会得到一个可能包含数据库中已存在的对象Foo的List,但我没有它的id,因为它们是新实例。
答案 0 :(得分:1)
我建议将实例标记为脏的标记:
public class Foo {
private String title;
private String subject;
private boolean isDirty=true;
public void onPersist(){
this.isDirty=false;
}
public String setTitle(String title){
this.isDirty=true;
this.title=title;
}
//more setters und getters
}
修改1
正如d'alar'cop所指出的,你似乎别无选择,只能根据标题和/或主题查询数据库。
但根据您的标签,您使用的是sqlite。如果您可以控制tabledefinition,则可以在create语句中查看具有唯一约束的ON CONFLICT [REPLACE|IGNORE]子句。这样你就可以插入你的列表并让do数据库成为它的工作。
祝你好运, SAM