簡體   English   中英

DDD,我應該創建一個域服務來保存數據嗎?

[英]DDD, should I create a domain service just to save data?

我正在嘗試遵循本指南https://www.baeldung.com/hexagonal-architecture-ddd-spring 在閱讀之后,我發現了這個有趣的方法

最后,我們應該確保在每次操作后始終保存訂單。 為此,我們將定義一個域服務,它通常包含不能成為我們根的一部分的邏輯:

因此,據我了解,當我們無法將業務邏輯放入單個域 object 時,我們使用域服務 但是指南所做的只是將單個域 object 保存到數據庫中,因為我們的域 object 中不能有存儲庫,對吧?? 如果是這種情況,為什么我們不讓 controller 訪問存儲庫(有人說這是不好的做法,有人說“不”我什至不明白??)因為我們已經將業務邏輯放在域 object 中。 所以我們會有這樣的東西。

@PostMapping
public Mono<Order> addProduct(Request request) {
    return orderRepository.findById(request.orderId())
                          .map(order -> {
                              order.addProduct(reqeust.getProduct());
                              return order;
                          })
                          .flatMap(order-> orderRepository.save(order));
}.

我們是否應該創建一個附加層並將其稱為域服務來保存數據? 請幫助我了解最佳實踐。

您絕對不希望實體或域服務中有任何數據庫代碼。

應用服務是一個操作的地方

在很多情況下,Application Services 是外部世界使用的接口,外部世界無法通過我們的 Entity 對象進行通信,但可能有它們的其他表示。 應用程序服務可以將外部消息傳遞給內部操作和進程,與域和基礎設施層中的服務進行通信,從而為外部客戶端提供內聚的操作。

應用程序服務協調對存儲庫和域對象的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM