在哪里放置需要从数据库中获取数据的域逻辑

use*_*034 7 architecture domain-driven-design domain-object

我知道域逻辑应放在域对象中.但是如果我的域逻辑需要来自数据库的数据呢?(例如,检查唯一值,计算值等等)我认为将存储库注入我的域对象是不对的.服务层也不应包含业务规则.那么如何解决这种业务逻辑呢?

Shi*_*iji 3

你是对的,你的域对象不应该直接从数据库读取数据。这里的典型错误是,当域对象位于无法访问数据库的服务器上时,域对象通过 Web 服务发送并尝试从数据库读取数据。

做这件事有很多种方法:

  • 服务层预加载领域对象所需的任何信息
  • 域对象可以调用从数据库获取数据的帮助程序或存储库