[英]What's the difference between @Repository and @RepositoryDefinition in Spring?
[英]What's the difference between a Repository and a Finder in Seedstack?
我正在使用 Seedstack 16.7 及其帶有 JPA 插件支持的業務框架。
有兩種方法可以從數據源獲取數據。
存儲庫http://seedstack.org/docs/business/manual/repositories/
查找器http://seedstack.org/docs/business/manual/finders/
它們之間唯一明顯的區別是 finder 是數據源的只讀接口。
finder 所需的大多數查詢都可以通過調用存儲庫並將聚合轉換為 Dto 來完成
它們之間有什么真正的區別,或者它們的意圖嗎? 除了在這個問題上說的。
用幾行來解釋它有點復雜,因為建模決策來自對 DDD、CQ(R)S、快速讀取模型、最終一致性等的深入理解。
正如手冊所說:“查詢持久層或任何數據源以獲取特定於應用程序接口的對象”。 這里的關鍵字是Interface 。 在圖形 UI 的情況下,查找器的用途是檢索具體視圖以將其呈現在桌面形式或網頁中。 在非 CRUD 應用程序中,UI 應該是基於任務的,因此:
因此,您在 UI 和聚合/實體之間存在阻抗失配。 解決此問題的最佳方法是明確地創建一種處理從持久性到視圖的方法。 發現者開始發揮作用。
當用戶發出一個暗示您的域發生變化的命令時,您必須檢索一個聚合並使用聚合根作為操作的入口點。 這確保了域的一致性和不變性(規則)。 聚合建模有很多細微差別(請看這里),因此嘗試將聚合和實體用於您的視圖是個壞主意。 因此,您需要一種從數據源讀取和構建內存聚合的方法。 這是存儲庫的工作。 有時,存儲庫會為您提供在檢索視圖數據時不需要的額外功能,例如實體更改跟蹤、創建要持久化的唯一標識等。處理視圖時您不需要任何這些功能。 存儲庫開始發揮作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.