jpadao層繼承什麼 ABP框架領域層

2021-10-13 16:28:59 字數 2790 閱讀 1595

領域層

•實體•倉儲

•領域服務

•工作單元(下期)

•領域事件(事件匯流排)(下期)

•實體是ddd(領域驅動設計)的核心概念之一。

•eirc evans是這樣描述的實體的:「它根本上不是通過屬性定義的,而是通過一系列連續性(continuity)和標識(identity)定義的」。

•因此,實體都有id屬性並且都儲存到資料庫中。

•乙個實體一般會對映到資料庫的一張表。

在abp中,實體派生自entity類,entity預設是int(int32)

對倉儲的定義:

•位於領域層和資料對映層之間,使用類似集合的介面來訪問領域物件。

•在實踐中,倉儲是執行領域物件(實體和值物件)的資料庫操作。一般地,乙個分離的倉儲用於乙個實體(或者聚合根)。

irepository介面

在abp中,乙個倉儲類應該實現乙個irepository介面。為每乙個倉儲定義乙個介面是乙個好的做法。

irepository介面:查詢

獲得單個實體

irepository介面:查詢

獲得多個實體

irepository介面:插入

獲得多個實體

注:insert、insertorupdate 方法不會即時執行到資料庫。只有帶 andgetid 的方法才會即時執行到資料庫。

當工作單元完成時才統一執行到資料庫。

irepository介面:更新、刪除

注:更新、刪除方法不會即時執行到資料庫。

當工作單元完成時才統一執行到資料庫。

irepository介面:使用

irepository介面:最佳實踐

•倉儲類應該是無狀態的。這意味著,你不應該定義倉儲級別的狀態物件,而且乙個倉儲方法呼叫不應該影響其他的呼叫。

•自定義倉儲方法不應該包含業務邏輯或者應用邏輯,而應該只執行資料相關的或者orm特定的任務。

•當倉儲使用依賴注入時,給其他服務定義更少的或者不要定義依賴。

領域服務(或ddd中的服務)用於執行領域操作和業務規則。eric evans描述了乙個好的服務應該具備下面三個特徵:

1.和領域概念相關的操作不是乙個實體或者值物件的本質部分。

2.介面定義在領域模型其他元素的條款中。

3.操作是無狀態的。

跟獲得或返回乙個資料傳輸物件的應用服務方法(dto)不同,領域服務獲得或者返回乙個領域物件(比如實體或值型別)。

乙個領域服務可以用於應用服務,也可以用於其他的領域服務,但不能直接用於展現層,服務層才直接用於展現層。

idomainservice介面和domainservice類

1.abp定義了idomainservice介面,所有的領域服務都按照慣例實現了該介面。當實現時,領域服務會以transient自動註冊到依賴注入系統。

2.此外,領域服務(可選地)可以從domainservice類繼承。因此,它可以使用一些繼承的屬性,比如logging,本地化等等。當然,如果沒有繼承,如果需要的話也可以注入這些屬性。

討論:為什麼不使用應用服務實現領域服務中的邏輯呢?

我們可以簡單地說,它不是應用服務要幹的活。因為領域邏輯不是乙個用例(use-case),而是乙個 業務操作。我們可以在不同的用例中使用相同的「將乙個任務派給乙個人」的邏輯。比如說我們以後會更新這個任務,並且將這個任務派給其他人。

因此,我們可以使用相同的領域邏輯,這個邏輯就是「將乙個任務派給乙個人」,我們不用考慮這個具體的人和具體的任務。此外,我們可能有兩個不同的ui(乙個移動端應用和乙個web應用)來共享相同的領域。

如何強制使用領域服務:

開發這個應用服務的開發者可能不知道存在乙個taskdomainservice,而且可以直接將給定的 personid設定給任務的 assignedpersonid。那麼,如何阻止他這樣做呢?

回顧•實體:定義實體常用的幾種基類  entity、creationauditedentity、auditedentity、fullauditedentity、ipassivable、aggregateroot

•倉儲:倉儲提供資料層常用的操作方法,倉儲的定義與使用方式,倉儲使用的最佳實踐和建議。

•領域服務:領域服務存在的意義、職責,如何定義乙個領域服務。

jpadao層繼承什麼 實木複合地板特點是什麼

一 優點 1 繼承了實木地板典雅自然 腳感舒適 保溫效能好的特點,克服了實木地板因單體收縮,容易起翹裂縫的不足,具有較好的尺寸穩定性,且防蟲 不助燃 不反翹變形 從保護森林資源角度看,它是實木地板的換代產品。2 實木複合地板有三層的,五層的和多層的,不管有多少層,其基本的特徵是各層板材的纖維縱橫交錯...

ABP領域層 實體

參考陽光銘睿的教程 實體類 在abp中,實體類繼承自 entity 類public class person entity person類的父類中有 id屬性,id是該實體的主鍵,預設型別是 int,如果想給id定義其他型別,如下,也可以設定為 string,guid public class pe...

2 abp 領域層建立實體

領域層 learningmpaabp.core專案 基礎服務層 entityframework對應的專案 1 在領域層新建tasks資料夾 在資料夾下新建task類 但是注意 task類必須要繼承entity類,entity類又實現了ientity介面 和 ientity介面 其中 ientity裡...