扫码阅读
手机扫码阅读

DDD该怎么去落地实现(4)多对多

56 2025-03-01

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:DDD该怎么去落地实现(4)多对多
文章来源:
充满诗意的联盟
扫码关注公众号

实现多对多关系的设计

在领域驱动设计(DDD)中,落地的关键在于保留领域模型中的对象关系,包括多种类型的关系如“一对一”、“多对一”、“一对多”、“多对多”和“继承”。为了准确表达这些关系,除了领域对象,还需要通过领域特定语言(DSL)来辅助表达。例如,订单对象之间的关系可以通过编写订单对象和相应的DSL来补充说明,包括聚合关系。

多对多关系的落地策略

多对多关系较为复杂,如“用户”与“权限”的关系。通常,通过增加关联类来简化为两个多对一关系或两个一对多关系。这样的设计让业务开发人员只需关注领域对象、DSL和领域服务的开发,而底层数据库操作则由平台负责,简化了开发过程。

实现多对多关系的具体方法

实现多对多关系的一种方法是通过关联类转变成两个多对一关系,涉及用户表、权限表和用户-权限关联表。另一种方法是转变成两个一对多关系,通过在用户和权限对象中增加集合属性,并在DSL中进行配置。这样的设计使得业务开发人员可以方便地进行多对多关系的开发。

查询多对多关系

查询时,如果领域对象和DSL配置正确,用户的所有授权信息可以自动获取。底层平台需要读取DSL配置,查询关联对象和授权对象,将结果放入用户对象的属性中。查询性能可以通过一次性查询和Redis缓存进行优化。

总结

多对多关系设计实现需要中间增加关联类,形成两个多对一或两个一对多关系。第一种方案简单但查询麻烦,第二种方案需要强大的DDD底层平台支持但业务开发简单。两种方案各有利弊,开发者可根据实际情况进行选择。后续文章将探讨继承关系的实现。

想要了解更多内容?

查看原文:DDD该怎么去落地实现(4)多对多
文章来源:
充满诗意的联盟
扫码关注公众号

范老师与大家探讨架构设计、软件重构、敏捷开发,以及微服务、大数据技术。

19 篇文章
浏览 6173
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线