DDD该怎么去落地实现(7)继承关系(下)
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
充满诗意的联盟
扫码关注公众号
扫码阅读
手机扫码阅读
文章主旨:
探讨在领域驱动设计(DDD)中为继承关系落地开发的具体实现方法,涵盖增删改查操作及相关设计思路。
关键要点:
- 继承关系的领域对象持久化有三种方案:Simple方案、Union方案、Joined方案,各有优缺点,需根据业务场景选择。
- 增删改操作的实现重点在于如何识别子类、进行数据缓存优化,以及基于不同持久化方案的适应性设计。
- 查询操作通过load()和query()方法实现,继承关系的查询复杂度根据持久化方案的不同而变化。
- Union和Joined方案在查询性能和灵活性上有权衡,可通过混合方案设计满足复杂需求。
- DDD落地开发的核心是准确体现领域模型中的关系及其业务逻辑。
内容结构:
1. 引言
继承关系在DDD中的落地开发涉及领域对象的持久化操作。本文继续探讨继承关系的增删改查实现。
2. 增删改操作
2.1 操作流程
通过OrmController根据前端传递的JSON数据识别子类,调用Service方法完成业务校验、规则处理和操作。
2.2 持久化方案对增删改的影响
- Simple方案:所有子类数据存储在一张表。
- Union方案:根据标识字段存储到各子类表。
- Joined方案:父类字段存储到父类表,子类字段存储到对应子类表。
2.3 更新操作的复杂性
更新操作需比对提交数据与数据库中的数据,处理可能的子类切换或字段更新。缓存机制优化查询性能。
3. 查询操作
3.1 load()方法
通过主键ID查询单条记录,根据持久化方案及标识字段决定返回的子类对象。
3.2 query()方法
基于SQL语句批量查询数据,Simple方案较简单,Union方案需合并多表查询,Joined方案自动补填子类数据。
3.3 混合方案设计
结合Union和Joined方案,通过DSL配置实现灵活查询,支持父类和子类的不同查询需求。
4. 总结
继承关系的落地开发是DDD关系设计的重要部分,其核心在于准确表达领域模型中的关系和逻辑。
文章总结:
本文系统讲解了继承关系在DDD中的增删改查操作,强调根据业务需求选择合适的设计方案,同时优化性能和灵活性。
充满诗意的联盟
充满诗意的联盟
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
充满诗意的联盟的其他文章
DDD该怎么去落地实现(5)继承关系(上)
如何将DDD的继承关系落地到程序设计,并完成数据库的持久化呢?是个问题,我们一起探讨一下吧!
DDD你真的理解清楚了吗(2)
DDD你真的理解清楚了吗?到底用“贫血模型”还是“充血模型”,是个问题
DDD该怎么去落地实现(1)关系
采用了DDD,应当使得我们的开发变得简单,代码变得清爽,而不是代码变得臃肿。因此,我将通过一系列的文章,探讨DDD如何简化,更容易落地软件项目
DDD你真的理解清楚了吗(8)非敏捷团队
DDD能在非敏捷团队实践吗?我们通过一个案例实战一把吧
按需交付价值
3月30日,2019规模化敏捷春季峰会,我作为Topic Leader组织小组讨论了一个非常有趣的话题:Cannot release value when customers need it.(无法按照客户需要的时间点提供价值)...
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线