知识卡片
通用资源库复用聚合的基本持久化操作
内容
资源库的实现取决于对ORM框架的选择(Hibernate、MyBatis、jOOQ、Spring Data JPA、EF、NHibernate等),但无论选哪种,为聚合定义管理其生命周期的资源库、并遵循菱形对称架构将资源库分为端口与适配器,都是资源库设计的基本要求。遵循”聚合/合成优先复用原则”,可在南向网关适配器层实现一个与具体聚合无关的通用资源库类Repository<E extends AggregateRoot, ID extends Identity>:内部用JPA的EntityManager管理实体生命周期,提供findById、findAll、findBy(Specification)、saveOrUpdate(内部据contains判断merge或persist)、delete等增删改查基本方法,查询用Specification满足各种条件。发散:把跨聚合共性抽到泛型通用资源库、把聚合特有查询留给各自适配器,是”复用”与”聚合专属语义”的合理分工。
参考来源
- 位置:《解构领域驱动设计》第19章 19.3.1(源文件:_epub-src/OEBPS/032.xhtml)
- 结论依据:原文给出泛型通用Repository类以复用聚合的基本持久化操作。
- 原始内容:可在南向网关的适配器层中实现一个与具体聚合无关的通用资源库类……提供了"增删改查"等持久化的基本方法。