【问题标题】:how to implement object merge如何实现对象合并
【发布时间】:2011-10-18 00:34:09
【问题描述】:

我有复合对象,即其他对象的复合。两个客户在两个单独的副本中更改了对象内部,我想合并这些更改,这样做的最佳方法是什么,是否有支持这种操作的框架?
谢谢,奥哈德。

【问题讨论】:

  • 两个客户是什么意思?这是一个分布式应用程序吗?这些对象可能位于不同用户的不同机器上?
  • 不,它们最终都在同一个jvm中。客户端使用 tcp 来“告诉”他们想要更改的内容。
  • 如果它始终是同一个 JVM,那么您可以为该对象创建一个单例吗?这样你总是只更新那个对象。此外,如果这些对象代表一些真实世界的实体,比如用户,那么您可以创建缓存对象的哈希图,您将在其中执行合并操作!
  • singelton 不会帮助我,因为如果对象被某人更改,我想合并另一个人的更改并允许解决冲突。我需要一种找到冲突的方法。第二个建议我不明白,虽然我的对象不是现实世界的实体。
  • 类似于单身人士。假设用户 U1 创建了 C 类的对象 O1。现在用户 U2 想要创建 C 类的对象 O2,其中 O1.equales(O2) 然后您只需返回缓存的 O1,而不是创建对象 O2。但我认为这可能对你没有用。

标签: java merge compare


【解决方案1】:

如果您的对象是普通的旧 Java bean,那么您可以使用反射来比较 2 个对象之间的所有属性。 Commons BeanUtils 可以提供帮助。

但您必须实施一些冲突解决策略。如果两个客户端都更改了相同的属性。最简单的方法是“最新更改获胜”策略 - 使用最新“lastUpdateTime”的更改会覆盖任何其他更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 2015-04-12
    • 2016-11-18
    • 2018-12-18
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    相关资源
    最近更新 更多