DDD 聚合根 限界上下文
案例
微信账号:手机号
用户A注销微信账号,需要钱包数据、银行卡数据、亲属卡信息,同时被删除
对一个对象修改,会涉及大量关联对象状态的修改。
需要使所有关联对象的状态保持一致
Aggregate 聚合
对存在引用关系的一组对象的封装
目的:屏蔽掉内部对象之间复杂关联关系,只对外暴露统一接口
根对象、边界
外部引用根对象,内部保持状态一致
Identifier是Entity的唯一标识
聚合根是一个特殊的Entity
微信用户A转账给用户B
私有的无参构造:禁止new的方式创建对象,需要通过工厂创建
repository是操作组件,屏蔽上层领域逻辑和下层数据库实现
通过repository就能够只操作聚合根来实现多对象的状态一致
find是查找整个聚合,save是持久化所有对象的状态
Entity是对领域的建模,PO是对数据表的映射。它们是一对一,一对多,多对一的关系。
上面的代码可以优化,比如WechatAccount中的Nickname被修改,需要保存,调用save则全部保存一遍,duck不必。change tracking问题,可以的做法:
记录聚合中每个对象的版本号,如果被修改,版本号自增,save时检查版本号。可以对这些对象进行切面代理,当对象被修改,代理中就标记已修改,在save时检查标记。
也可以使用已有的主流开源实现。
限界上下文
Bounded Context
BC
DDD 聚合根 限界上下文相关推荐
- 商品领域ddd_DDD领域驱动实战 - 限界上下文(bounded context)
限界上下文定义领域边界,以确保每个上下文含义在它特定的边界内都具有唯一的含义,领域模型则存在于这个边界之内. 通用语言 在事件风暴过程中,通过团队交流达成共识的,能够简单.清晰.准确描述业务涵义和规则 ...
- DDD领域驱动设计(DP、Entity介绍;DDD实现流程;DDD聚合Aggregate;限界上下文(Bounded Context))
DDD(Domain Driven Design) DP(Domain Primitive) define: 一切模型.方法.架构的基础,是指在特定领域.拥有精准定义.可以自我验证.拥有行为的对象,可 ...
- DDD微服务架构设计第三课 DDD领域中的聚合、工厂和仓库、限界上下文
05 聚合.仓库与工厂:傻傻分不清楚 上一讲,我们知道了,要将领域模型最终转换为程序设计,可以落实到 3 种类型的对象设计,即服务.实体与值对象,然后进行一些贫血模型与充血模型的设计思路.但这远远不够 ...
- DDD单根 聚合根 实体 值对象
前言 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Software (领域驱动设计),简称E ...
- DDD 实战 (5):限界上下文映射和系统分层架构
在完成了限界上下文的识别(也就是系统"最粗粒度"的模块划分)后,我们需要对这些上下文之间的协作关系进行分析--即"限界上下文关系映射".也只有在完成上下文关系映 ...
- DDD - 聚合与聚合根_如何理解 Respository与DAO
文章目录 Pre Question 如何理解 聚合和聚合根 利用聚合解决业务上的原子性操作 如何确定聚合和聚合根 Respository VS DAO Pre 通常情况,我们都会面临这样的一个问题: ...
- DDD理论学习系列(3)-- 限界上下文
1. 引言 限界上下文可以拆分为两个词,限界和上下文. 限界:是指一个界限,具体的某一个范围. 上下文:个人理解就是语境. 比如我们常说的段子: "我想静静." 这个句子一般是想表 ...
- 1.DDD中的领域对象、值对象、聚合根
一.DDD中的领域对象.值对象.聚合根 参考地址: DDD-快速理解聚合根.实体.值对象的区别和联系_王瑞学习笔记-CSDN博客聚合根.实体.值对象的关系:1.实体具有ID,生命周期,状态用值对象描述 ...
- DDD:聚合根的批量删除是不是可以批量发送请求
背景 搞了近五年的系统开发,总是抱着一种思维模式,用户的一个操作对应一个请求和一个事务,比如:用户选择了N条记录,我就会向服务器发生一个请求,服务器在一个事务中进行处理.前几天在群里一个前辈反问:批量 ...
最新文章
- mysql-dj数据准备-创建班级表
- mongoose c++封装
- impala java api 操作_Impala实践之六:使用Rest Api
- JS+PHP实现登录后自动执行之前的操作
- 玩转Android---组件篇---Broadcast Receiver(广播接收器)
- 【TSP】基于matlab灰狼算法求解旅行商问题【含Matlab源码 1327期】
- html5show()函数怎么写,实例:用JavaScript来操作字符串(一些字符串函数)_基础知识...
- 【40周年系列活动】中国干细胞第十届年会(2020·贵阳)第二轮通知
- 泰勒·斯威夫特(Taylor Swift)最好听歌曲专辑,喜欢的可以下载保存
- rss opml_分享我的OPML,所有人都在做
- access用姓名字段统计人数_access题库61-66(1)
- Poco库完全使用手册
- 程序员写在猝死的前一天
- Android设置状态栏的字体颜色
- 微信小程序模板消息测试- formId 的获取
- JavaFx教程-02第一个javaFX程序
- 长春欲造“书城” 自助图书馆让读者在家门口畅快阅读
- 经典PID学习感悟(一)-初步认知【比例kp】
- mapping文件的编写
- R语言把DataFrame的一行变成向量