PO(persistant object) 持久对象
- 在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO 中应该不包含任何对数据库的操作。
- 一个PO有三种状态:
1.未被持久化的VO,此时就是一个内存对象VO,由JVM管理生命周期。
2.已被持久化的PO,并且在Session生命周期内,此时映射数据库连接,由数据库管理生命周期。
3.曾被持久化过,但现在和Session已经托管(detached)了,以VO的身份在运行。它还可以进入另一个Session,继续PO状态管理。
DO(Domain Object)领域对象
- 就是从现实世界中抽象出来的有形或无形的业务实体。一般和数据中的表结构对应。
DTO(Data Transfer Object) 数据传输对象
- 这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
VO(view object) 值对象
- 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
举个DTO,VO的例子
- 登陆京东商城,登陆的时候需要给后端传送账号密码,这里给他设为一个对象LoginUser;登陆成功后后端向前端返回一组数据用于展示京东商品页面,这个对象叫ShowMessage;
- 在这个例子里,LoginUser便是DTO;ShowMessage既是VO