Java 重复从对象列表更新数据库中的记录

Java 重复从对象列表更新数据库中的记录,java,android,sql,sqlite,android-sqlite,Java,Android,Sql,Sqlite,Android Sqlite,我有一个包含以下对象的列表: public class Foo { public String title; public String subject; } 例如:List mFoo=new ArrayList() 我的数据库中有一个表,具有相同的名称和属性 此列表包含大约1000个对象。第一次处理此列表时,所有对象都将存储在数据库中 下一次,列表中的某些对象将更改,或者一些新对象也将添加它。问题就在这里 如何更新和向数据库添加新对象,以避免将数据库中存储的所有对象加载到其他

我有一个包含以下对象的列表:

public class Foo {
    public String title;
    public String subject;
}
例如:
List mFoo=new ArrayList()

我的数据库中有一个表,具有相同的名称和属性

此列表包含大约1000个对象。第一次处理此列表时,所有对象都将存储在数据库中

下一次,列表中的某些对象将更改,或者一些新对象也将添加它。问题就在这里

如何更新和向数据库添加新对象,以避免将数据库中存储的所有对象加载到其他列表中,然后比较两个列表

是否存在某种方式可以最大限度地减少对数据库的访问?(我不希望每次加载1000个对象)

编辑1:展开信息 我从解析外部源数据(html代码)的方法中获取
列表mFoo
。然后我将对象作为Foo保存在数据库中

当我保存一个对象时,我会得到一个id

public class Foo {
    private String id; 
    public String title;
    public String subject;
}

每次执行该方法时,我都会得到一个列表,其中可能包含数据库中已经存在的对象Foo,但我没有它的id,因为它们是新实例

我建议使用一些标志将实例标记为脏实例:

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语句中查看具有唯一约束的子句。这样,您应该能够插入列表并让数据库完成它的工作

致以最良好的祝愿,
sam

因此,为了澄清,数据库和列表将更改(去同步)?否。当列表更改(对象更改或添加新对象)时,数据库必须保存列表中的更改。但我无法在每次添加对象或对象更改时更新数据库。我有完整的列表,我必须与数据库中的记录进行比较。(作为合并操作)则提供的答案是确定的。虽然我可能会建议你再列一份清单,但当你更改/添加了一些东西时,你会把它放在第二份清单中。。。然后只将第二个列表加载到数据库中。这对你的情况有用吗?我补充了一些额外的信息。不幸的是我不能使用它,当我怀疑你注定需要比较他们所有。。。也许你可以考虑做一些改造,让它不是这样的?我的意思是,这样你就可以保留ID,或者这样当方法运行时,你就不会失去你已经拥有的一切?