如何处理彼此依赖的DataMappers?

时间:2016-04-19 00:22:45

标签: java datamapper

我正在编写应用程序并遵循Data Mapper模式。

我最终遇到了两个数据映射器相互依赖的情况。具体来说,我有Parent类型,其中包含Child个对象。修改父级时,需要获取其子级列表并稍微处理它们。修改子项时,必须检查其父项的状态。这导致类结构如此:

class ParentMapper {
  ParentMapper(ChildMapper childMapper) { ... }
  void save(Parent p) {
    Child[] children = childMapper.list(p.getId());
  }
}

class ChildMapper {
  ChildMapper(ParentMapper parentMapper) { ... }
  void save(Child c) {
    Parent p = parentMapper.get(c.getParentId());
  }
}

我不能在没有创建另一个的情况下创建。

处理此问题的好方法是什么?虽然我不需要使用Data Mapper模式,但我发现它是一个很好的干净抽象。

这是带有Guice的Java,供参考。

1 个答案:

答案 0 :(得分:0)

也许,为了您的目的,您应该提供ChildMapper作为ParentDomainObject的依赖项,而不是ParrentMapper,ParrentMapper作为ChildDomainObject的依赖项,而不是ChildMapper。 然后,您可以在save()方法调用之前在ParentDomainObject中处理一些子项。类似于检查Parent的状态,您可以在调用save()之前执行此操作。 有些人认为在另一个数据映射器中使用一个数据映射器并使它们相互依赖是不太好的做法。

Using data mapper inside another data mapper in Java?

我认为这不是ParentMapper修改ChildDomainObject的责任,反之亦然。