如何映射剩余资源、领域模型和实体

问题描述 投票:0回答:1

我有一个商店对象,其中一个区域只能包含一个开放的商店。 实体模型

@Entity
Public class Shop{
 @Id @GeneratedValue Long id;
 String Name;
 String Area;
 String closed;

} 

领域模型

Public class ShopModel{
 
 String Name;
 String Area; //unique identifier of shop
 String closed;

} 

休息资源

Public class ShopResource{
 String id;
 String Name;
 String Area;
 String closed;

} 

根据我的理解,当我们收到任何请求时,转换将如下进行:

资源 -> 领域模型 -> 实体和实体 -> 领域模型 -> 资源

我必须创建 CRUD Rest api,并且必须根据 id 公开获取每个商店资源。在那种情况下, 如果我的域模型缺少 id 属性,我对如何在资源对象中映射 id 感到困惑?

这是正确的做法吗?我们是否应该直接将实体转换为资源并保留域仅用于执行业务逻辑?或者将 id 属性添加到我的域模型中。

请建议什么是正确的方法。

rest domain-driven-design crud
1个回答
0
投票

第1步.定义商店资源:

/shops/{id}

步骤 2. 为 API 层的 HTTP

GET
方法定义方法(伪代码):

ShopResource get(Long id) {
   return new ShopResource(shops.shop(id));
}

第3步.在领域层定义类:

class Shops {
   Shop shop(Long id) {
      // invoke data layer
   }
}

您可以在商店中拥有

id
或在 API 层中设置它,因为您从请求中知道它(取决于该对象的其他用途,在这种情况下并不重要)。

附注我建议您考虑如何确保数据库中的数据完整性,您可能需要多个表。例如,考虑一个场景,您在一个区域有 3 个商店:1 个营业,2 个关闭,您的数据库如何不允许一个商店的状态更改,使其变为 2 个营业和 1 个关闭。

© www.soinside.com 2019 - 2024. All rights reserved.