根据DDD或六边形架构的推荐实践,领域模型应与更多关联于实际使用技术的数据模型表示(如表/列名称、连接等JPA注释)分开。这里存在一个实际问题——在这个模型中如何执行乐观版本控制?比如说,你有一个领域服务对领域模型进行读取-更新-保存操作。现在,JPA实体可能具有不能向上传递的版本列。因此,当保存调用到达存储库时,存储库再次进行(模型-->实体)转换和读取+更新操作时,它将无法确定最初读取实体的哪个版本。
第二个问题涉及性能方面,需要进行额外的读取。
没有适用于项目中DDD的万能解决方案。这取决于您的需要和期望。
我应该尽快完成吗? 我可以花点时间来进行持久性到领域转换吗?
此代码是否由以后要更改的人使用,如果我不对其进行“锁定”,他们是否可能进行奇怪的操作?
我是否尝试创建纯DDD实现?
我应该放松一些规则,以便逐步将DDD引入我的项目或团队中吗?
有关JPA和领域实体的有趣阅读内容:
有不同的方法可以实现它。这主要取决于您的应用程序/层在架构中的位置。大多数情况下,与实体模型通信的应用程序/层位于基础级别。如果没有必要,则无需创建分离。通信的证明始终将是将与此层对话的层,因此我认为没有必要创建更多的转换。您可以只传递实体模型/实例数据。