更新 llms-full.txt
This commit is contained in:
@@ -284,6 +284,7 @@ DateTime endTime; //会议结束时间
|
||||
#### **2.7 视图对象 (VO)**
|
||||
- **定义与用途:** 在TOCO中,VO表达某个BaseDTO(如果用户指明派生源,也可使用其他DTO)为派生源,通过外键关系不断关联多个BaseDTO的数据结构。VO用于在视图层与前端之间进行数据传输,往往被当做HTTP API的返回值、或读方案的返回值使用,由服务端返回至前端。注意VO不能作为RPC的返回值。
|
||||
- **关键配置:** 名称(以Vo结尾)、根Entity、派生源、字段列表。VO中的字段分为三种:a.继承DTO的字段,如果DTO中的字段为基础类型或EO、Enum,则VO中的继承字段和和DTO的字段类型一样,如果DTO中的字段为DTO或List<DTO>类型,则继承字段为字段对应的DTO类型派生出的VO或List<VO>类型;b.扩展字段,含正向替换和反向注入字段,类型为VO或List<VO>;c.自定义字段,类型为基本类型或VO类型。VO中的字段来源于DTO,可以根据页面需要将无用字段进行裁剪,可以根据外键关系扩展其他BaseDto(详见**字段扩展方式**)。如果在派生源中没有合适字段,且明确无法通过外键扩展外部BaseDto的情况下,可增加对应的自定义字段
|
||||
- **继承字段类型转换:** VO只和其派生源VO之间有转换关系。当一个VO派生自某个DTO,且该VO继承了派生源DTO中的DTO类型字段(假设为DTO-A),此时VO中对应的继承字段类型必须为VO(假设为VO-A),且**VO-A也必须派生自DTO-A**,如此才能维持VO和DTO之间的转换关系
|
||||
- **与DTO的区别 (在TOCO语境下): **DTO用于服务层传输,通常作为RPC的返回值,与数据模型更近,复用性较强;VO用于视图层传输,通常作为API的返回值,与UI展示更为接近,可裁剪掉不需要的DTO中的冗余字段,复用性较弱。
|
||||
- **如何创建/生成:** VO通常由某个BaseDTO以及外键关系为基础派生,也可以直接创建和DTO无关、内部全为自定义字段的VO(尽量少用,只为应对某些特殊页面,需要组装一组完全无关的返回数据的场景)。
|
||||
- **根VO和子VO:**TOCO中的VO分为两种:1.根VO,指最外层的VO结构,需要经由TOCO创建,有uuid作为唯一标识,根VO可被其他根VO或子VO引用;2.子VO,某个根VO的内部嵌套VO,通过外键关系关联BaseDTO之后由TOCO自动创建,只附属于某个根VO,只能被这一个根VO引用,且没有uuid。所以在TOCO中,我们需要描述VO要的字段、扩展关系,并通过**创建根VO**的行为使TOCO**自动创建**其子VO,或引用其他根VO,即可完成一个复杂嵌套VO的创建过程,无需单独创建子VO。
|
||||
|
||||
Reference in New Issue
Block a user