【发布时间】:2014-05-28 17:30:46
【问题描述】:
所以我不确定它叫什么,但我需要弄清楚如何最好地进行可能涉及插入、更新和删除操作的更新。情况如下:我的应用程序有存储在数据库中的 POJO。这些对象可能包括也存储在数据库中的其他对象的列表。例如,一个 Bag 对象可能有一个 Item 对象列表。
我希望能够更新包。但是,有 3 种可能的情况:
- 包中的所有物品都已在数据库中。在这种情况下,我只需要更新数据库中的项目。
- 包中有一些不在数据库中的项目。在这种情况下,我需要弄清楚哪些项目是新的,然后插入它们
- 我正在更新的 Bag 对象中不再存在数据库中的项目。在这种情况下,我需要从数据库中删除额外的项目。
这里明显的解决方案是删除它并重新插入所有内容。但这很慢,并且会导致生成新的密钥。在大多数情况下,这不是问题,但它可能会在未来造成重大问题。
根据我的研究,我发现 MERGE 可能很有用。但是,根据我的阅读,MERGE 更适合数据组。我很可能只想对单个条目进行更新,或者项目列表可能只包含一个对象。此外,看起来 MERGE 只能删除匹配的记录。
设计此功能的最佳方式是什么?
【问题讨论】: