在了解仓储之前,首先我们来看领域对象的生命周期。

领域驱动设计之仓储-风君雪科技博客

1.首先通过调用领域对象的构造函数或工厂创建出对象,对象处于活动状态,这时对象可以进行相关业务逻辑处理。

2.对象如果需要进行持久化,则需要通过持久化操作将对象存储到持久化存储中,比如数据库。

3.当需要使用某个对象时,可以通过访问持久化存储重建这个对象,并使用这个对象,使用后的对象可以重新持久化到存储中,也可以销毁。

4.当需要销毁某个对象时,可以通过访问持久化存储重建这个对象,并删除这个对象。

这里需要注意的是,在实际的开发过程中,我们建议不要删除对象,因为删除在大多数情况下是数据库层面的内容,在业务层面,我们建议更改对象的状态为废弃,在持久化

时,对数据所做的操作应该是更新。

 

仓储的主要作用就是用来维护一系列的领域对象,领域对象通过仓储来实现持久化(也就是通过仓储来与数据库打交道),而不是领域对象直接操作数据库。这样做的好处是:

1.解耦了领域对象与持久化机制。领域对象不用关心持久化具体使用的技术,领域对象只需要知道仓储的接口,具体仓储的实现机制它并不关心,这样也实现了领域模型的纯净性。

2.可以随时替换仓储的实现,也就是数据库持久化机制,而对领域对象是透明的,并且有助于作单元测试。

 

这里需要重点申明的是,工厂和仓储的实现都是针对聚合根,我们只对聚合根设计仓储。

 

欢迎加入QQ讨论群:309287205