DDD该怎么去落地实现(6)继承关系(中)
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
充满诗意的联盟
扫码关注公众号
扫码阅读
手机扫码阅读
文章主旨:
探讨领域驱动设计(DDD)中继承关系的持久化实现及三种主要方案(Simple、Union、Joined)的优缺点与适用场景。
关键要点:
- DDD继承关系的持久化存储可选三种方案:Simple、Union和Joined,每种方案有明确的优缺点。
- Simple方案适用于子类较少且个性化字段较少的情况,但容易导致表稀疏问题。
- Union方案为每个子类分别创建表,适合只查询某个子类数据的场景,但多表查询性能较差。
- Joined方案通过父类表存储公共字段,子类表存储个性化字段,适合查询所有子类场景,但可能产生较多关联操作。
- 根据业务需求选择适合的方案,并通过DSL配置实现继承关系的持久化。
内容结构:
1. 引言
介绍DDD继承关系的复杂性及其持久化存储挑战,概述三种解决方案:Simple、Union和Joined。
2. Simple方案
- 将父类与所有子类数据存储到一张表。
- 优点:设计简单,增删改查操作集中于单表。
- 缺点:子类多时易导致表稀疏,浪费存储空间且影响查询性能。
3. Union方案
- 每个子类单独创建表,主键统一由生成器生成。
- 优点:适合按子类独立查询的场景,设计灵活。
- 缺点:查询性能较差,需遍历所有子类表。
- 应用场景示例:折扣系统,根据子类独立查询折扣信息。
4. Joined方案
- 父类公共字段存储在父类表,子类个性化字段存储在各子类表。
- 优点:可一次性查询所有子类数据。
- 缺点:关联查询较复杂,可能增加性能开销。
- 应用场景示例:用户系统,所有用户需统一查询。
5. DSL配置与代码实现
通过DSL对继承关系进行详细配置,包括父类字段、子类字段及标识字段的映射。示例代码展示如何通过服务层及通用仓库完成持久化操作。
6. 结论与展望
总结三种方案的适用场景与特点,强调根据具体业务需求选择合适的设计方案,预告下一期将深入探讨更多细节与变更场景。
文章总结:
文章逻辑清晰,内容针对性强,适合DDD技术从业者参考;建议根据场景需求权衡方案优缺点,灵活选择实现方式。
充满诗意的联盟
充满诗意的联盟
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
充满诗意的联盟的其他文章
DDD落地实现的深水区(5)整洁架构落地(下)
嵌入式、桌面端是否也可以使用整洁架构,像Web应用那样地设计、开发与规划系统,让技术更迭更加容易呢?当然可以,看看我的设计思路吧
DDD你真的理解清楚了吗(2)
DDD你真的理解清楚了吗?到底用“贫血模型”还是“充血模型”,是个问题
按需交付价值
3月30日,2019规模化敏捷春季峰会,我作为Topic Leader组织小组讨论了一个非常有趣的话题:Cannot release value when customers need it.(无法按照客户需要的时间点提供价值)...
DDD该怎么去落地实现(4)多对多
在现实世界中,多对多关系其实并不常见,但也还是有的。当领域模型中真的出现了多对多关系时,软件系统又应该如何落地实现呢?我们今天来探讨一下吧
DDD该怎么去落地实现(5)继承关系(上)
如何将DDD的继承关系落地到程序设计,并完成数据库的持久化呢?是个问题,我们一起探讨一下吧!
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线