1
我正在讀「實施領域驅動設計」一書,並在頁面上的一個顯示實施領域驅動設計圖書混亂
public class ProductBacklogItemService ... {
...
@Transactional
public void planProductBacklogItem(
String aTenantId, String aProductId,
String aSummary, String aCategory,
String aBacklogItemType, String aStoryPoints) {
Product product =
productRepository.productOfId(
new TenantId(aTenantId),
new ProductId(aProductId));
BacklogItem plannedBacklogItem =
product.planBacklogItem(
aSummary,
aCategory,
BacklogItemType.valueOf(aBacklogItemType),
StoryPoints.valueOf(aStoryPoints));
backlogItemRepository.add(plannedBacklogItem);
}
...
}
他的書還表示參考:DDD總結應該代表事務邊界。需要多個集合參與的交易往往表明要麼對模型進行細化,要麼對交易要求進行審查,或者對兩者都進行審查。
在上述例子中,將不產品和BacklogItem是在單個事務中2個不同的聚集體?我很困惑。誰能分享一些想法?
我認爲產品中含有backlogitem的集合,於是兩人的AR受到影響,無論是產品和BacklogItem。 – Joshscorp
不過,這不是教條而是指導。當您創建一個聚合時,通常由另一個聚合來完成。 http://www.udidahan.com/2009/06/29/dont-create-aggregate-roots/ –
如果我沒有記錯,這是最初的'大'AR分裂成不同的AR的地方。所以最初'產品'包含集合,但它們不應該在'產品'上,因爲存儲庫現在代表該集合。 'Product'現在只包含工廠方法,可能會正確創建關聯。以下是Udi Dahan發表的一篇文章:http://www.udidahan.com/2009/06/29/dont-create-aggregate-roots/ –