缓存中的Hazelcast复杂对象模型

时间:2014-09-12 03:55:32

标签: persistence hazelcast object-graph

我希望将一个复杂的模型放入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中执行此操作?利益集团的情况类似。如果我将所有客户都嵌入到一个兴趣小组中,那么我将重复数据,特别是如果客户位于多个兴趣小组中。

为了实现这一点而不重复我是否必须妥协我的实体的对象结构?

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果您知道如何为地址Hazelcast地图构建address_key,您可以将HazecastInstanceAware实现到您的模型类,并使用getter构建某种“懒惰提取”来检索地址。这对你有意义吗? :)