在DDD中,指南指出域模型不应该与持久性有关。这意味着不同的域模型可能依赖于相同的表。同时,由于ORM在转换模型中的技术限制(我想?),这个目标似乎很难实现。有没有办法,通过实际的ORM,创建依赖于数据库中相同表的非常特定的域模型,并防止99.99%的DDD实现中实体和表之间的令人失望的[1:1]映射?这些技术限制(?)是否使指南过时了?
谢谢,
答案 0 :(得分:2)
实体和表之间的“令人失望的[1:1]映射”可能会以两种方式让您失望 - 无法从多个表填充实体,也无法从同一个表中填充多个实体。< / p>
由于您似乎对后者更感兴趣,因此对于大多数ORM来说都是可能的,即使只是通过在ORM的单独映射“实例”中为一个表定义不同的映射。描述了实体框架的解决方案here和here。
答案 1 :(得分:1)
我想答案取决于您的域模型与数据库表的不同之处。有时您可能无法单独使用ORM来实现DDD持久性。这不应该阻止您或让您在数据库周围设计域模型。这也是DDD具有存储库接口概念的原因,因为存在模型的任务可能非常复杂。
该指南现在不再比最初编写时过时。 ORM可能与本指南兼容,也可能不兼容,但并不意味着使用其他方法无法实现。
我同意您的评估,即大多数DDD模型都是数据库的1:1镜像。简短的回答是,持久性并不总是容易的,但绝不是不可能的。
答案 2 :(得分:1)
如果您使用Java,则可以使用遵循Data Mapper模式的MyBatis来实现这一目标。
答案 3 :(得分:0)
DDD中的一个关键思想是有界上下文,其中包含以下几个内容:
DDD可能会出现两种情况,具体取决于天气,项目是绿色领域还是褐色。
在第34页至第68页的书中,#34;实施领域驱动设计&#34;作者:Vaughn Vernon。