簡體   English   中英

我可以按數據源創建存儲庫還是應該按聚合創建存儲庫?

[英]Can I create repository by data source or should I create a repository by aggregate?

現在我正在我的項目上實現存儲庫模式,我對我到底應該如何實現存儲庫模式有疑問。 我的想法是通過數據源創建存儲庫,例如RedisRepository、DbRepository。 而且我還沒有找到關於應該基於什么存儲庫的任何嚴格規則。

所以我的問題是基於數據源創建存儲庫是一種好的做法,或者無論如何最好的做法是通過聚合(例如 CarRepository)創建存儲庫? 如果您知道的話,也許您還可以分享一些與此主題相關的好文章。

如果您采用域驅動設計方法,則每個聚合根都應該有一個存儲庫: https ://learn.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/ 基礎設施持久層設計

在 Hexagonal 架構中,執行此操作的標准方法如下:

應用層定義了存儲庫接口(例如它需要什么),在這里您有意省略了任何持久性技術細節,因為它不關心功能是如何提供的。 它可能看起來像這樣:

interface CarPersistence {
    update(car);
    findOne(model, brand, ...);
}

在您的基礎設施層中,您將為特定的持久性技術創建一個存儲庫實現,該技術將實現此接口,從而為應用程序層提供所需的功能。 該實現定義了如何提供所需的功能。

class MongoDbCarPersistence implements CarPersistence {
    // ...
}

關鍵方面是應用層中的接口定義與技術無關。 因此,無論您是為 MongoDB 還是 MySQL 實現實際存儲庫,都不會影響接口,因此不會影響使用該接口的任何類。 這是六角形建築的主要目的之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM