PO、VO、BO、DAO、DTO、POJO

PO、VO、BO、DAO、DTO关系图
img
DAO(Data Access Object)数据访问对象,数据访问:顾名思义就是与数据库打交道,它封装了与底层数据源(如数据库)的交互逻辑。为业务逻辑层(Service)提供数据服务接口,隐藏了底层数据源的细节和复杂性。

PO(persistant object )持久对象,可以看成是与数据库中的表相映射的java对象,完全符合Java Bean规范的纯Java对象,没有增加额外的属性和方法。持久对象是由数据库创建并管理的,其生命周期与数据库密切相关。

用途:PO通常用于与数据库进行交互,作为数据访问对象(DAO)层的数据模型。

BO(Business Object)业务对象,封装了与业务相关的数据和操作逻辑。包含了业务规则和业务逻辑的实现。可能包含多个PO或DTO的属性,以及处理这些属性的业务方法。

比如PO1 是交易记录,PO2 是登录记录、PO3 是商品浏览记录、PO4 是添加购物记录,BO 就是个人网站行为对象

用途:BO负责处理业务逻辑、数据校验和与DAO的交互等任务,确保数据的完整性和业务规则的正确性。

DTO(Data Transfer Object)数据传输对象,用于在系统的不同部分之间传输数据。DTO是一个简单的POJO(Plain Old Java Object),不包含任何业务逻辑。主要用于服务层(Service)和展示层(Controller)之间的数据传输。可以包含多个PO或VO的属性,根据具体业务场景进行定制。
比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,
如果用这个对象来对应界面显示,那此时它的身份就转为VO

VO(View/Value object)视图对象,通常用于业务层之间的数据传递,如从Controller层到Service层,通常是从PO中提取出来的一部分数据,用于展示和传递给前端界面。VO对象通常只包含属性和对应的getter和setter方法,用于存储和获取数据。和PO一样也是仅仅包含数据而已。

用途:VO作为数据传输的载体,简化了数据的传输和降低了层与层之间的耦合度。
可以和表对应,也可以不,这根据业务的需要。PO只能用在数据层,VO用在商业逻辑层和表示层。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。

POJO(Plain Old Java Objects)简单的Java对象,就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来,
而且简称比较直接.其中有一些属性及其getter、setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.
当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-19 09:52:03       110 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-19 09:52:03       119 阅读
  3. 在Django里面运行非项目文件

    2024-06-19 09:52:03       98 阅读
  4. Python语言-面向对象

    2024-06-19 09:52:03       106 阅读

热门阅读

  1. HTML(6)——表单

    2024-06-19 09:52:03       38 阅读
  2. 【数据结构】练习集

    2024-06-19 09:52:03       31 阅读
  3. template标签

    2024-06-19 09:52:03       41 阅读
  4. Springboot应用设置跳过SSL证书认证

    2024-06-19 09:52:03       52 阅读
  5. MySQL-DML-约束

    2024-06-19 09:52:03       42 阅读
  6. 研导AI写作:辅助创作的未来伙伴

    2024-06-19 09:52:03       38 阅读
  7. vue3基础

    2024-06-19 09:52:03       42 阅读
  8. C++ 设计模式

    2024-06-19 09:52:03       35 阅读
  9. 19、架构-虚拟化容器

    2024-06-19 09:52:03       34 阅读
  10. python 数据清洗基础教程

    2024-06-19 09:52:03       37 阅读