DDD仓储怎么设计
我发现现在的设计基本是一个DAO对应一个表,这种设计好像不是很好。如何改进?
我发现现在的设计基本是一个DAO对应一个表,这种设计好像不是很好。如何改进?
按照领域模型来设计,以模型来划分,一个聚合根实体为一个Repositoy,抛弃DAO和表的设计思路。
恩,我想的也是,谢谢老大指点。但是有个问题。假设我有个聚合根是Customer,他是跟creditCard关联的。那我有个仓库CustomerRepository,那我在CustomerRepository里面直接写方法addCreditCard?还是在CustomerRepository中委托creditCardDAO去保存?如果去委托的话,我不是还得写个creditCardDAO么。。?求指教。。
banq大哥曾说过:Repository替代Dao是OO深入的趋势,但在具体处理中,由于性能或设计不够周到或者一些事情把握不定,Dao还会存在一段时间,属于过渡式消失。Repository是相对对象而言的,而Dao是相对数据库而言的,只要我们还是使用关系数据库保存对象,也可能这两者都同时存在,因为侧重点不一样,但是可以肯定的是,业务层应该直接和Repository打交道,而不是Dao。
我也想问这个问题,请问你现在有答案了吗
当然应该在Customer中有addCreditCard方法,一旦Customer从CustomerRepository出来后,就和Customer没有关系,CustomerRepository和Customer的关系就是仓库和库存品的关系。仓库只是保管库存品。
这里体现设计思路是划分好事物的边界。仓储和工厂是管理一个对象的生命周期,也就是对象边界之外的东东,属于对象边界内部的区域由对象本身负责。
以人为比喻,人是由母亲出生,然后生活家庭中,母亲和家庭这些都是人边界外的,而吃饭拉屎等动作是人边界内部的事情,应该由人负责。
学习了,正好也有这样的疑问