POJO全称Plain Ordinary Java Object,表示简单的Java对象,是DO/DTO/BO/VO的统称。一个POJO持久化后就会成为PO,若用来传递则传递过程中是DTO,若用来对应表现层则是VO。
POJO | 全称 | 说明 |
---|---|---|
DO | Domain Object | 领域对象 |
DTO | Data Transfer Object | 数据传输对象 |
BO | Bussiness Object | 业务对象 |
VO | View Object | 表现层对象,对应视图层用于展示层。 |
- DO领域对象,是从现实世界中抽象出来的有形或无形的业务实体,简单来说是对现实世界中各种业务角色的抽象。
- DTO数据传输对象,概念源于J2EE的设计模式,目的是为EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用次数,从而提高分布式调用性能,以降低网络负载。DTO主要用于远程调用、不同层之间(通常是View展示层和Service服务层之间)等需要大量传输对象的位置。DTO遵守JavaBean规范,拥有Getter/Setter方法,类似VO。
- BO业务对象,作用是把业务逻辑封装为一个对象,可以包括一个或多个对象,通常封装了对DAO、RPC等的调用,可进行PO与VO/DTO之间的装换。BO位于业务层(区别于直接对外提供服务的服务层),BO提供了基本业务单元的基础业务操作,在设计上属于被业务流程调用的对象(一个业务流程可能需要调用多个BO来完成)。
- VO表现层对象,用于表示一个与前端进行交互的Java对象。VO的作用是将页面或组件的数据进行封装,使用一个VO对象表示一整个页面所需展示的值,其他不需要的数据不应该放入到VO对象中,以减少数据传输量。VO遵守JavaBean规范拥有Getter/Setter方法。
BO相关的概念:只包含业务对象的属性、只包含业务的方法、两者都包含
业务逻辑 | 是否负责 |
---|---|
系统领域业务的处理 | 负责 |
逻辑性数据的生成、处理与转换 | 负责 |
对所输入的逻辑性数据的正确性及有效性 | 负责 |
对输出的逻辑性数据以及用户性数据正确性 | 不负责 |
对数据的呈现样式 | 不负责 |
相关概念
模型命名 | 全称 | 说明 |
---|---|---|
PO | Persistent Object | 持久化对象 |
DAO | Data Access Object | 数据访问对象 |
VO | Value Object | 值对象 |
- PO持久化对象,跟持久层(关系型数据库)的数据结构形成一一对应的映射关系,仅用于表示数据。一个PO对象相当于数据库中的一条记录,每个字段对应PO对象的一个属性。因此,PO可视为是与数据库表相映射的Java对象。PO遵守JavaBean规范,除了Setter/Getter之外没有任何操作。
- VO值对象,用于业务层之间数据传递,和PO一样仅包含数据,应是抽象出的业务对象,可以和表对应也可以不对应。
- DAO数据访问层对象,使用DAO访问数据库包括增删改查等操作。DAO与PO一起使用,DAO在持久层完全封装数据库操作,对外暴露的方法。上层应用不需要关注数据库相关的任何信息。
持久化是将程序数据在持久状态和瞬时状态之间转换的机制,简单来将是将瞬时数据(比如内存中的数据,它是不能永久保存的)持久化为持久数据(比如持久化至数据库就能够长久保存)。