领域模型中的实体类分为四种类型:VO、DTO、DO、PO,各种实体类用于不同业务层次间的交互,并会在层次内实现实体类之间的转化。
业务分层为:视图层(VIEW+ACTION),服务层(SERVICE),持久层(DAO)
相应各层间实体的传递如下图:
概念:
VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。
模型:
下面以一个时序图建立简单模型来描述上述对象在三层架构应用中的位置
l 用户发出请求(可能是填写表单),表单的数据在展示层被匹配为VO。
l 展示层把VO转换为服务层对应方法所要求的DTO,传送给服务层。
l 服务层首先根据DTO的数据构造(或重建)一个DO,调用DO的业务方法完成具体业务。
l 服务层把DO转换为持久层对应的PO(可以使用ORM工具,也可以不用),调用持久层的持久化方法,把PO传递给它,完成持久化操作。
l 对于一个逆向操作,如读取数据,也是用类似的方式转换和传递,略。
三、项目中的实体类
项目中常见的实体类有VO,DO和DTO,命名规则也常是以相应字符串结尾,如*VO.Java。但是DTO不总是遵循这个规则,而通常与他的用途有关,如写成*Query.java,表示存储了一个查询条件。项目中实体类出现的业务层次也没有这么严格,例如我们可以在视图层就组装一个DO,也可以将一个VO从持久层传出来,所以与业务分层相关联的划分方法显得有些冗余。从项目代码中抽象出的理解是:VO对应于页面上需要显示的数据,DO对应于数据库中存储的数据,DTO对应于除二者之外需要进行传递的数据。
相关推荐
以下是关于POJO、VO、PO、DO、DTO的详细解释及其区别。 1. POJO(Plain Old Java Object):POJO是一个通用术语,指没有特定框架限制的简单Java对象。它通常包含了业务逻辑和数据属性,不包含任何特定框架的注解或...
J2EE基础知识之DTO,VO,PO,DO等定义J2EE基础知识之DTO,VO,PO,DO等定义J2EE基础知识之DTO,VO,PO,DO等定义
本文将详细介绍VO (View Object)、DTO (Data Transfer Object)、BO (Business Object)、ORM (Object Relational Mapping)、DAO (Data Access Object)、Entity (实体)、DO (Data Object)、PO (Persistent Object)、...
阿里规约(题主只是用VO和DO) 简写 全写 说明 DO Data Object 数据库表映射类,DAO层向上传输数据使用 DTO Data Transfer Object 数据传输对象,Service层向上传输数据使用 BO Business Object 业务对象,Service...
浅析 VO、DTO、DO、PO 的概念、区别和用处! Java特性 感受lambda之美,推荐收藏,需要时查阅 来了来了,Java14它真的来了! 别用Date了,Java8新特性之日期处理,现在学会也不迟! 一次List对象去重失
* PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系。 本资源摘要信息旨在帮助开发者更好地理解和应用DDD在软件开发中的重要性,提高软件系统的可维护性、...
- **强制规定**:类名使用UpperCamelCase风格,除了特定的缩写如DO/BO/DTO/VO/AO/PO/UID等。 - **正例**:如`MarcoPolo`、`UserDO`、`XmlService`、`TcpUdpDeal`、`TaPromotion` - **反例**:如`macroPolo`、`...
- **类名**:使用UpperCamelCase风格,但特定情况如DO、BO、DTO、VO、AO、PO、UID等例外。 - **方法名、参数名、成员变量、局部变量**:使用lowerCamelCase风格,遵循驼峰命名法。 - **常量命名**:全部使用大写...
- 类名应使用UpperCamelCase风格,例外情况为DO、BO、DTO、VO、AO、PO、UID等。 - 方法名、参数名、成员变量、局部变量应统一使用lowerCamelCase风格。 - 常量命名应全部大写,单词间用下划线隔开。 - 抽象类...
4. **DAO模式**:了解DAO(Data Access Object)模式,掌握DO、PO、VO、DTO、Domain Object等术语的含义。 #### 七、企业级应用开发 1. **EJB2**:探索Enterprise JavaBeans 2.0规范,包括EntityBean和SessionBean...
- 类名遵循UpperCamelCase风格,但特定类型如DO、BO、DTO、VO、AO、PO、UID等除外。正确示例:`ForceCode`, `UserDO`, 错误示例:`forcecode`, `UserDo`。 - 方法名、参数名、成员变量和局部变量使用...
2. 类名遵循UpperCamelCase风格,但有一些例外,如DO、BO、DTO、VO、AO、PO、UID等,这些通常用于特定的领域模型或数据传输对象,不需严格遵循此规则。 3. 方法名、参数名、成员变量和局部变量都应使用...
2. **类名**:使用UpperCamelCase风格,但DO/BO/DTO/VO/AO/PO等特殊情况除外。 3. **方法名、参数名、成员变量、局部变量**:使用lowerCamelCase风格,遵循驼峰命名法。 4. **变量命名**:非公有变量前加`m`,静态...
- 类名应遵循UpperCamelCase风格,但特定情况下如DO/BO/DTO/VO/AO/PO等可以例外。 - 方法名、参数名和成员变量名应遵循lowerCamelCase风格,用以区分不同层级的命名。 2. 常量定义 - 常量通常以大写字母表示,...
而类名应该使用UpperCamelCase风格,除了一些特定的类型如DO(Data Object)、BO(Business Object)、DTO(Data Transfer Object)、VO(Value Object)、AO(Application Object)、PO(Persistent Object)、UID...
类名应当遵循`UpperCamelCase`风格,除非是某些特定的缩写词如`DO`(Data Object)、`BO`(Business Object)、`DTO`(Data Transfer Object)、`VO`(View Object)、`AO`(Application Object)、`PO`(Persistent...
风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等。 【强制】方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从 驼峰形式。lower 【强制】常量命名全部大写,单词间用...