对象分层
常用的对象的有以下几个层次:
数据对象(实体):跟数据库中的表结构对应,实体关系反映外键关联。
数据传输对象(DTO):跟界面数据新增、修改表单对应,满足数据的传输、展示需求。针对同一个实体的数据提交和数据查询可能会对应不同的DTO。
数据展示对象(VO):根据页面展示需求,可能对DTO进行进一步的转换。
数据查询对象(QO):跟界面的查询表单对应,负责传递参数到后端服务。
数据对象(实体)
数据对象的作用是数据库实现一一映射的关系。
根据数据库设计可以定义出实体和实体关系,进而通过JPA生成数据库表结构(或者通过已有的表结构反向生成实体)。
数据传输对象(DTO)
数据传输对象一般来讲分为两种:提交数据时的传输对象和获取数据时的传输对象。前者和前端页面中的数据新增/修改表单对应,后者和前端的数据表格对应。通常情况下可以使用统一的数据传输对象同时满足以上两种需求。
DTO的数据通常有缓存的需求,因此不推荐在DTO中使用实体关联。DTO和实体之间存在大量相互转换的需求,当实体和DTO中字段不一致时,需要在DTO中配置映射关系。
DTO通常存在于接口交互中,使用Swagger定义DTO的属性和示例值。
数据展示对象(VO)
一般情况下,DTO可以满足页面展示的需求,当DTO无法满足页面展示需求时,可能会对DTO做进一步的转换,以VO的形式返回给调用者。
在RESTful Webservice中,一般不推荐使用VO。
数据查询对象(QO)
在信息管理系统中,存在大量的表单查询需求,QO是和查询表单对应的对象。
对于复杂的比较条件(如:大于、包含于、模糊匹配等)查询,开发人员只需在QO中使用@QueryCondition
注解维护查询条件,前端以普通参数的形式将表单提交到后端,MVC框架负责将参数映射到QO中。
Last updated