2016-12-16 79 views
2

我目前正在學習域驅動開發(DDD)。看完一些教程後,我想將我的舊學校項目從分類型SOA建模爲DDD。我確定了3個有限的上下文(現在):祕書管理(學生和教授的CRUD),教授任務(爲學生創建任務)和學生任務(上傳任務解決方案)。名稱沒有正確選擇,這只是應用程序的概述。在域驅動開發中的休眠中的多個有界上下文之間共享實體

問題是將會有兩個不同的教授實體:一個在管理中將包含名稱,地址,電子郵件和其他東西,另一個在教授任務中將包含id和名稱。

我的問題是我將如何使用hibernate和JPA建模?我正在考慮創建一個包含應用程序中所有實體的包,使用JPA註釋進行註釋,每個包含所有必需的字段,並且在每個有界的上下文中都有其他類只包含該有界上下文中必需的字段。存儲庫必須從該特定類映射到JPA實體。有沒有更好的解決方案?

謝謝。

+0

您是打算在同一個應用程序中部署所有3個有界的上下文,還是將每個都視爲可部署的,也許是微服務? – Naros

+0

我會將它們部署在同一個應用程序中,不管是在不同的包中還是在不同的模塊中 –

+0

爲什麼不在每個BC中映射單獨的類? BC也是一個技術邊界,其中應選擇適當的工具。 – plalx

回答

1

不要在有界的上下文之間分享你的持久性。您可以在應該通過設計解耦的東西上創建耦合。

如果你有「這是同樣的事情」的感覺 - 重新考慮你的上下文邊界。可能是你需要合併它們。如果事情抵制分裂,你可能會破壞凝聚力,但你的有限背景必須具有高度的凝聚力。

通常情況下,不同的有界情境即使對於現實生活中相同的東西也有不同的擔憂。在這種情況下,具有相同名稱的域對象看起來完全不同。這基本上就是爲什麼他們被稱爲「有界上下文」,因爲單詞在不同的上下文中有不同的含義。

相關問題