Tag: domain driven design

如何处理富域模型的持久性

我正在重新devise我的NodeJS应用程序,因为我想使用Rich Domain Model概念。 目前我正在使用贫血域模型,这不是扩展好..我只是看到'如果'无处不在大声笑。 我已经阅读了一堆博客post和DDD相关的博客,但有一些我根本无法理解…我们如何正确处理持久性。 首先,我想描述我已经定义的图层和目的: 持久性模型 定义表模型。 定义表名,列,键和关系 我使用Sequelize作为ORM,所以用Sequelize定义的模型被认为是我的持久性模型 领域模型 实体和行为。 与作为业务域一部分创build的抽象相对应的对象 我已经创build了几个类,这里​​最好的事情是,我可以从层次结构中获益,解决所有问题(没有ifs的负载)。 数据访问对象(DAO) 负责数据pipe理,并将持久性模型条目转换为域模型的实体。 所有与持久相关的活动都属于这一层 就我而言,DAO在持久性模型上创build的Sequelize模型上工作,但是,我正在序列化基于数据库交互的不同对象的数据库交互的属性。 例如:如果我有一个名为'UserType'的列包含两个值[ADMIN,USER]的表,当我select这个表上的条目时,我会根据用户types序列化返回,所以一个用户types: ADMIN将是AdminUser类的一个实例,其中types为USER的用户将只是一个DefaultUser … 服务层 负责所有通用业务逻辑,例如不属于任何域对象行为的实用程序和其他服务 客户端层 任何使用对象的消费者类,负责触发持久性 现在,当我实现客户端层时,混乱开始了… 比方说,我正在实施一个新的REST API: POST: …/api/CreateOrderForUser/ { items: [{ productId: 1, quantity: 4 },{ productId: 3, quantity: 2 }] } 在我的处理函数,我会有这样的事情: function(oReq){ var oRequestBody = oReq.body; var oCurrentUser = oReq.user; //This […]