首先我想说的是,我开发软件的标准方法可能是许多开发人员的典型……我有行为丰富但没有状态的服务,我有只有状态而没有状态的对象(Bean)行为(我认为这通常被称为贫血域模型)。
我决定在一个新项目中尝试领域驱动设计 (DDD) 方法,但是我有几个问题确实让我很烦恼。
我有一个现有的第 3 方数据库,我的组织使用它(它与业务紧密耦合,对此我无能为力:我不希望有任何评论提及如果第 3 方更改他们的数据模型...我知道!!)。我创建了休眠实体来表示数据,但是我不确定如何将其转换为符合 DDD 原则的内部模型表示(即封装数据访问的富域模型)。
这类问题一定有模式,但我发现很难找到任何模式。这使我相信我可能以错误的方式做某事(即不是通常接近的方式)。
我目前的策略是:
- 识别休眠实体中的关键实体,并尝试将它们与相关的 Values 对象打包在一起(这真的很困难,我相信因为我从数据开始并创建一个域......关于方法的任何建议这也将受到欢迎)
- 对于我确定的每个包,我都创建了一个存储库来管理实体
- 在每个存储库(例如 StudentHibernateRepository)中,我抓住我需要的休眠实体并将它们包装在一个代理类中。
- 在每个代理类中,我添加了我的业务规则,这些规则通过使用包装的休眠实体作为数据源(再次尝试使我的代码行为丰富)。
如果有人有做类似事情的经验,请您分享经验/模式。如果您能反思一下我所采取的策略,那也会很有帮助。
干杯,
爱