1

基本上,我有一個Notification實體,代表用戶在我的應用程序上的通知。DDD /良好的做法,通過存儲庫一次保存許多實體

我期待一個用戶可以標記爲一次「讀取」許多通知的用例。

我目前所做的是獲取通知的集合,循環它們以便爲每個指定一個notificationRepository.save(notification)。 (save或甚至add如果我們嚴格遵循存儲庫模式本質來抽象數據庫概念)。

在封面下,存儲庫實現綁定了一個遠程數據庫

問題是,這是往我的數據庫服務器往返(遠程)非常昂貴。
事實上,如果用戶希望標誌10個通知,將有10往返...

有沒有一種方法來批量的保存,同時保持DDD技術形態規則?
例如,我應該在存儲庫中定義addAll(或saveAll)方法嗎?

+0

我的存儲庫有一個flush方法,它將所有掛起的更改寫入數據庫。不需要保存方法。 – Cerad

+1

閱讀有關工作單位。 –

回答

3

通常,如果您有ORM或某種更改跟蹤器,則在存儲庫中不需要save()方法,因爲在提交UnitOfWork時會在應用程序級別刷新修改。

如果標記了10個通知,ORM可能會將其轉換爲10個更新語句,但這對我來說從來不是問題。也許你可以優化它來做批量更新,但如果它真的是一個問題。