【问题标题】:How to know which property is updated?如何知道更新了哪些属性?
【发布时间】:2015-11-19 18:10:28
【问题描述】:

我有一个为实体公开的 Web 服务。

现在,当有人想要更新该实体时,比如说产品作为实体和描述,他们想在 Web 服务的帮助下进行更新。 所以第三方应用程序发送 productid 和描述。那么我怎么知道这个特定属性已更新,以便我可以将此属性设置为 pojo 并将此产品插入数据库中。

【问题讨论】:

  • 更具体。最好发布一些模拟代码。
  • 对此我很抱歉,但它与架构问题更相关......

标签: java json web-services product


【解决方案1】:

您应该使用模式观察者 (wikipedia)。在 web 服务和数据更新服务中实现它(通过示例)。

使您的网络服务可观察,并使您的数据管理器成为观察者。

将来,您可以添加更多观察者(例如,对于应用程序或其他网络服务)。

【讨论】:

    【解决方案2】:

    我认为您需要与之前的版本进行比较。例如。

    你可以有一个实体的缓存,并通过 id 在缓存中找到对象,然后你需要比较每个属性。因此,您可以识别已更改的属性。

    如果您无法与缓存进行比较,则需要与您的数据存储库进行比较。

    如果您更新所有字段,我认为它不那么复杂。

    【讨论】:

    • 是的,我可以做到...即使我也可以告诉第三方发送以这种方式更改的产品的属性名称,我不需要设置所有属性,但有没有更好的方式?!
    • 我认为这是最好的方法。我不建议客户端发送它更改的字段,因为它可能会发送错误的信息。
    【解决方案3】:

    只是为了更新... 我找到了另一种方法

    Iterator<?> keys = JsonOject.keys();
        while(keys.hasNext() ) {
                                String key = (String)keys.next();
    

    BeanUtils.setProperty(object, key, JsonOject.getString(key)); }

    通过这种方式,您可以将键作为属性名和值传递,如上所述,无需知道哪个属性即将到来。只是我们必须仔细检查该属性是否应该正确命名。

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2016-03-05
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多