PO、VO、BO、DAO、DTO、POJO

PO、VO、BO、DAO、DTO关系图

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之类的方法

相关推荐
计算机毕业设计指导15 分钟前
基于Spring Boot + Vue 3的社区养老系统设计与实现
vue.js·spring boot·后端
拾忆,想起15 分钟前
Redisson 分布式锁的实现原理
java·开发语言·分布式·后端·性能优化·wpf
焰火199916 分钟前
[Java][SpringBoot]AspectJ切面配合自定义注解实现权限校验
java
几颗流星16 分钟前
Rust 常用语法速记 - 解构赋值
后端·rust
我想当数字游民21 分钟前
Go的切片是什么?一些小细节和容易错的地方
后端·golang
肖焱23 分钟前
Java中的集合类有哪些?如何分类的?
后端
野生程序员y25 分钟前
Spring DI/IOC核心原理详解
java·后端·spring
是萝卜干呀1 小时前
IIS 部署 asp.net core 项目时,出现500.19、500.31问题的解决方案
后端·iis·asp.net·hosting bundle
从零开始学习人工智能1 小时前
SpringBoot + Apache Tika:一站式解决文件数据提取难题
spring boot·后端·apache
往事随风去1 小时前
Java 中的 Consumer 与 Supplier 接口
java·面试·响应式编程