【问题标题】:Hazelcast Complex Object Model in Cache缓存中的 Hazelcast 复杂对象模型
【发布时间】:2014-09-12 03:55:32
【问题描述】:

我希望将一个复杂的模型放入 Hazelcast 中,以将其用作应用程序的数据层,其中 MapStore 实现将实际对象呈现到数据库。例如,假设我们有以下有害的常见模型,为了简洁起见,我已经去掉了 getter 和 setter:

class Customer {
  public int id;
  public String name;
  public Address address;
}

class Address {
  public int id;
  public String street;
  public string city;
  public String state;
  public String zip;
}

class InterestGroup {
  public int id;
  public String name;
  public List<Customer> customers;
}

这是我想存储在数据库中的模型,但我也想映射到 Hazelcast。此外,假设我希望客户共享地址,这样如果地址更改为一个,那么所有具有该地址的客户都会更改。

我可以编写 MapStore 类来从数据库中读取这些信息,甚至可以为每个对象提供一个主键以用作映射键。我遇到的问题是在实体之间的地图中设置导航。假设我获得了一位客户并希望导航到该客户的地址,然后获取所有使用该地址的客户。

如果我将客户和地址加载到地图中,我不想将所有客户嵌入到地址中,也不想将地址嵌入到每个客户中。我想透明地从客户导航到地址。有没有一种方法可以在 hazelcast 中做到这一点而不会破坏嵌套对象的动态但同时允许地址存在于另一个地图中?利益集团的情况类似。如果我将所有客户都嵌入到一个兴趣组中,那么我就是在复制数据,尤其是当客户在多个兴趣组中时。

为了不重复地完成这一点,我是否必须妥协我的实体的对象结构?

提前致谢。

【问题讨论】:

    标签: persistence hazelcast object-graph


    【解决方案1】:

    如果您知道如何为地址 Hazelcast 映射构建 address_key,您可以在模型类中实现 HazecastInstanceAware,并使用 getter 构建某种“延迟获取”来检索地址。这对你有意义吗? :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 2011-04-21
      相关资源
      最近更新 更多