我有一些来自外部源的文本文件,从中解析数据。基于Java的解析器的输出是表示解析数据的Java对象列表。数据对象已使用JPA标记进行注释,并持久保存到数据库中。
我会收到这些文本文件的定期更新,这些文件可能已更改,也可能未更改。当解析器再次对更新的数据运行时,它会创建一个新的对象列表。我需要将对象的较新版本与数据库中已有的对象进行整合。找出与新削减的文本文件中的对象有什么不同以及数据库中已存在的内容以便可以保留任何更新或新数据的好方法是什么?
答案 0 :(得分:1)
是的,应该只能使用merge()。只要对象具有相同的Id,merge()将合并任何更改,并仅更新更改的内容(或不更改)。
merge()需要加载对象,因此如果您知道对象集,可以通过在单个查询中预加载来优化它。
答案 1 :(得分:0)
你缺乏一些顽固性。在表格中创建一个列,表示您从中创建对象的源(文件名或特定文件的行 - 您还没有描述格式)。
然后,您将能够从数据库中读取对象,使用新值更新它并将其写回db。