3

在 DDD 中,我们说域实体不是数据库模型/实体的表示。我们还说,为了正确地从应用程序中提取领域模型,领域模型不应该有任何关于它的持久化方式或返回给客户端的方式的信息。


我遇到的问题是,在处理大多数 ORM 或数据库抽象时,我们需要使用一些特定于数据库的注释来注释数据库实体,从而违反规则。


这是否意味着我们应该为域创建一个实体,为持久化创建另一个实体?


我对此很陌生,不确定正确的方法是什么。

4

1 回答 1

4

领域模型往往是一个相当封装的事情。因此,当涉及到 ORM 实体时,域对象不是很好的候选对象。

如果您的域实体看起来像数据容器,这样它们就可以用作 ORM 实体,如果装饰有一些属性,那么您的域充其量是没有封装的,最坏的情况是一个贫血模型。

在我看来,您通常最终会得到一个域模型和某种形式的面向数据的 ORM 模型。

顺便说一句:

一旦你开始询问你的 ORM 带来了什么,你可能想看看通过放弃 ORM 并使用其他一些原始/较低级别的数据访问技术会损失多少。甚至可能会有一些性能提升。如果我对此事有发言权,我不会使用 ORM。

于 2020-02-03T09:40:14.790 回答