在DDD实践中,聚合应该作为一个完整的单元进行读取和持久化,简言之:DDD持久化时,是保存聚合根。这样做主要是为了“以确保业务的不变性或者说业务规则不变破坏”,如果聚合根只有自己一个Entity,没什么值得讨论的。但是现实中,聚合根下可能会有多个Entity。如:订单总金额应该与订单明细金额之和一致。看了一些讲解DDD的资料,要么是将聚合保存到文件里、要么是将聚合以JSON方式存储在DB里。显然并不满足大多数的需求!
如何优雅的实现持久化?如果我们使用JPA,Hibernate,很多事情无需我们关心,ORM已经处理好了。然而,现在Hibernate这类的ORM在国内已经没有当年那么流行了。Mybatis这类半自动的ORM怎么处理这个问题,更值得思考与讨论。