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 分钟前
[055][调度模块]Spring动态任务调度框架的设计与实现
java·后端·spring
白狐_79842 分钟前
408 数据结构算法题 01:线性表暴力求解保分指南
java·数据结构·算法
流云鹤1 小时前
03Java学习day(3)
java·学习
tqs_123451 小时前
Agent智能体+Skill插件引擎+Milvus混合检索 技术沉淀
java·python·milvus
卷福同学1 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端
严同学正在努力2 小时前
从备份到恢复:我用 30 分钟恢复了误删的核心业务表
android·java·数据库·ai
Csvn2 小时前
📊 SQL 入门 Day 11:CASE 表达式:SQL 里的 if-else 魔法
后端·sql
QQ_21696290962 小时前
Spring Boot 养老院管理系统:从入住、护理到费用结算的全流程实现(源码可领)
java·spring boot·后端
cxoptics3 小时前
冰洲石分束器设计与应用
java
ck-joker3 小时前
M1 Pro跑LLM实测:Ollama+LangChain4j零成本本地大模型开发,比云端API快在哪?
java·语言模型