news 2026/4/17 18:07:11

PO、VO、BO、DTO、DAO、POJO有什么区别?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PO、VO、BO、DTO、DAO、POJO有什么区别?

PO(Persistent Object)持久化对象,主要用于和数据库交互,是数据库数据在内存中的镜像。

VO(View Object)视图对象,和前端展示强相关,按需组装前端需要的字段。

BO(Business Object)业务对象,封装业务逻辑,包含业务处理方法,是业务层专用,业务层只操作BO,不直接碰PO/DTO。

DTO(Data Transfer Object)数据传输对象,屏蔽底层 PO 结构,可细分 ReqDTO(请求)和 ResDTO(响应),用于跨层或者跨服务传输数据。

DAO(Data Access Object)数据访问对象,负责和数据库打交道,隔离业务逻辑和数据操作,依赖PO,通过操作PO完成与数据库的交互。

POJO(Plain Ordinary Java Object)简单Java对象,最基础的Java类。

PO/VO/BO/DTO 本质上都是 POJO。

常见的调用链路

前端请求 → Controller接收【ReqDTO】→ Service将ReqDTO转为【BO】→ BO调用【DAO】→ DAO操作【PO】与数据库交互 → Service将BO/PO转为【ResDTO/VO】→ Controller返回给前端

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 1:36:22

15 个SpringBoot 常用启动扩展点,花活都在这上玩!

Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依…

作者头像 李华
网站建设 2026/4/18 3:50:31

瞧瞧别人家的Controller,那叫一个优雅

在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台Controller接口,或者提供Controller接口给第三方平台调用。 那么问题来了,如果设计一个优雅的Controller接口,能够满足:安全性、可重复…

作者头像 李华
网站建设 2026/4/18 11:31:47

计算机网络必看:信道的极限容量,408真题常考!

计算机网络必看:信道的极限容量,408真题常考!在学习计算机网络时,你是否曾困惑:“为什么网速不能无限快?” “一个信道到底能传多快?”这些问题的答案,就藏在信道的极限容量这个核心…

作者头像 李华
网站建设 2026/4/18 8:54:37

MySQL----case的用法

在 MySQL 中,CASE 表达式是一个用于条件判断的功能,可以根据不同的条件返回不同的结果。CASE 表达式通常用于 SELECT 查询语句中,可以在 SQL 中灵活地进行条件判断和数据转换。CASE 有两种基本的语法形式: 简单 CASE 表达式&#…

作者头像 李华
网站建设 2026/4/18 11:04:48

MySQL 数据类型详解:TINYINT、INT 和 BIGINT

在设计数据库时,选择合适的数据类型对于系统性能和存储效率至关重要。MySQL 提供了多种整数类型来满足不同的存储需求,其中包括 TINYINT、INT 和 BIGINT。本文将详细介绍这三种整数类型的区别、应用场景和使用建议。 1. TINYINT TINYINT 是 MySQL 中存储…

作者头像 李华
网站建设 2026/4/18 8:53:14

基于python深度学习的面部表情识别系统

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…

作者头像 李华