diff --git a/knowledge.md b/knowledge.md index 1f0a0ea..cba0778 100644 --- a/knowledge.md +++ b/knowledge.md @@ -122,21 +122,22 @@ - **与其他元素关系:** 聚合是写方案的基础。 - **代码产物和修改建议** - 综述 - - 业务对象包含多个Entity,通过嵌套组合表达Entity关系。有子对象时生成BO和BaseBO,BaseBO封装实体属性和关系,BO用于业务扩展。无子对象时只生成BO类。 + - 业务对象包含多个Entity,通过嵌套组合表达Entity关系。有子对象时生成BO和BaseBO,BaseBO封装实体属性和关系,BO用于业务扩展。无子对象时只生成BO类。 - BO * **生成产物**:Manager层生成聚合对象类,符合Hibernate标准 * **职责:** 定义聚合对象,组合成层级结构实现充血模型,支持写链路数据变更、监听变更、数据校验 * **命名规则**:${entityName}BO * **类路径:** `**.manager.bo`包下 * **唯一标识符位置:** 类注解@AutoGenerated中,uuid规则: ${Entity的uuid}|BO|DEFINITION - - **修改建议:** 建议修改BO中的validateAggregate或valid方法进行业务不变性校验。不建议修改校验方法以外的代码。校验方法由框架自动调用,不需要业务代码显式调用。 + * **聚合校验:** BO中包含一个validateAggregate(聚合根BO)或valid(非聚合根BO)方法,用来编写用于验证业务不变性相关的聚合校验代码。在通过聚合对象操作数据库时,TOCO会在框架中自动生成对validateAggregate方法的调用,所以禁止在业务代码显式调用,以免造成重复校验。 + * **修改建议:** 建议修改BO中的validateAggregate或valid方法进行业务不变性校验。不建议修改校验方法以外的代码。校验方法由框架自动调用,不需要业务代码显式调用。 - BaseBO * **生成产物**:存在子BO时生成,封装不变代码部分 * **职责:** 定义聚合对象,组合成层级结构实现充血模型,支持写链路数据变更、监听变更、数据校验 * **命名规则**:${entityName}BO * **类路径:** `**.manager.bo`包下 * **唯一标识符位置:** 类注解@AutoGenerated中,uuid规则: ${Entity的uuid}|BO|DEFINITION - - **修改建议:** 建议修改BO中的validateAggregate或valid方法进行业务不变性校验。不建议修改校验方法以外的代码。 + * **修改建议:** 建议修改BO中的validateAggregate或valid方法进行业务不变性校验。不建议修改校验方法以外的代码。 #### **2.6 数据传输对象 (DTO)** - **定义与用途:** DTO基于某个Entity构建,通过外键关系关联多个Entity的数据结构。DTO隐含数据组装逻辑,符合外键关系。分为BaseDTO和普通DTO:BaseDTO直接派生自Entity,包含Entity所有字段,每个Entity只有一个BaseDTO;普通DTO基于BaseDTO创建,包含BaseDTO所有字段,可增加扩展字段或自定义字段。DTO不能作为接口参数,不能作为HTTP API返回值。