我的团队决定在我们正在开发的新应用中尝试DDD方法。 我们面临的障碍之一是我们的平台 - 我们被迫使用ActiveObjects ORM框架(https://developer.atlassian.com/display/DOCS/Getting+Started+with+Active+Objects)。
鉴于DDD本身就是一个巨大的话题,这种约束的存在会使事情变得更加复杂。主要问题是通过ActiveObjects将域模型实体属性的更改传播到持久性存储。我们可以考虑哪些好的解决方案?
答案 0 :(得分:0)
ORM是一个持久性细节,即与域(不同层)完全无关。 DDD不是一个很大的话题。这是一种简单的心态,难以理解并且非常依赖于技能(这不是“如何”方法)。
DDD使用存储库来处理与持久性相关的所有内容。域只能看到存储库(仅抽象),而不是db,orm等。存储库使用ORM。正确封装的域对象可能不容易映射到ORM,并且您需要针对这些情况使用不同的方法(memento模式是一个干净但昂贵 - 无聊 - 维护解决方案)。但实质是Domain不了解ORM,而Repository负责持久化/检索域对象(使用ORM)。
您还应该使用CQRS,您不希望为UI设计业务对象或报告查询。