我有一些文本文件,这些文件是从外部来源解析的。基于Java的解析器的输出是代表已解析数据的Java对象的列表。数据对象已经用JPA标记注释,并被持久化到数据库中。
我收到这些文本文件的定期更新,这些更新可能已更改,也可能未更改。当解析器再次对更新的数据运行时,它将创建对象的新列表。我需要将对象的较新版本与数据库中已有的对象合并。找出与新解析的文本文件中的对象有何不同以及数据库中已存在的东西以使任何更新或新数据得以持久的好方法是什么?
最佳答案
是的,应该只能使用merge()。只要对象具有相同的ID,merge()就会合并所有更改,并且仅更新更改的内容(或不更新任何内容)。
merge()将需要加载对象,因此,如果您知道对象集,则可以通过在单个查询中预加载它们来对其进行优化。