存储库,映射器以及如何加载对象及其关系

时间:2010-02-12 15:14:16

标签: domain-driven-design

我正在使用C ++(使用Qt库)来创建一个简单的域建模应用程序。我正在编写自己的O / R映射类。随着这个应用程序在未来的发展,我正在努力保持一个清晰的代码库与明确分离的层。

我遇到的问题是何时何地加载在另一个模块中的对象中引用的聚合根。 (我在这里使用Eric Evans使用“模块”这个词,来自DDD书。)

我目前有一个名为Client的简单对象,它位于ClientModule模块中。在PermitModule我有一个Permit对象。 (现实更复杂但为了简洁起见,我会坚持这两个对象,因为它们是聚合根Permit对象引用了Client as applicant。这是我的域名模型。

自下而上,我有一个基础设施层,它包含O / R映射类和Repository个对象的具体实现。我在这里会有ClientMapperClientRepositoryDbPermitMapperPermitRepositoryDb类。

接下来是域层,其中包含域模型(ClientPermit类)以及存储库接口ClientRepositoryPermitRepository

上面我有应用层,然后是表示层,但在这个示例中无关紧要。

我的问题应该在Permit课程或Client课程中加载PermitMapperPermitRepository之间的关系。或者还有其他方法吗?

这不仅适用于加载对象,还适用于保存和删除对象。

1 个答案:

答案 0 :(得分:0)

我已经采用了Mapper类完全加载自身的方法。

我不是Java开发人员,但我想知道Hibernate(等)是如何做到的?