POJO VO DO DTO命名来源

它们各自的"职责"和"命名来源"


1 POJO(Plain Old Java Object)

• 字面意思:

Plain = 普通

Old = 老式的(非新技术)

Java Object = 就是一个 Java 对象

• 核心特征:

-- 没有继承特定框架类

-- 没有实现特定接口

-- 只有字段 + getter/setter + 可能的无参/全参构造

-- 因此它"纯粹",任何一个 Java 框架都能直接用

• 在代码里:

Employee、EmployeeLoginDTO、EmployeeLoginVO ... 只要符合上面特征,都叫 POJO。

它不是业务含义,而是"技术风格"------"一个普通 Java 对象"。


2 VO(View Object / Value Object)

• 命名来自"分层思想"

-- 数据库实体:Entity / DO(Data Object)

-- 业务逻辑:DTO(Data Transfer Object)

-- 给前端展示:VO(View Object)

• 为什么单独叫 VO?

  1. 只包含"前端需要看的字段"
    把敏感字段(password、salt、create_time ...)全部摘掉,防止泄露。
  2. 方便接口演进
    前端页面改版,需要多一个字段?改 VO 即可,不动数据库实体。
  3. 解耦
    Controller 层直接返回 Entity 会导致:
    -- JSON 字段冗余
    -- 数据库字段一改,接口可能直接崩
    VO 作为"视图模型"把后端内部结构屏蔽掉。

• 在代码里:

EmployeeLoginVO 只有 id / username / name / token 四个字段,正是页面登录成功后需要回显和保存的内容。


一句话总结

POJO 描述的是"技术形态"------一个普通 Java 对象;

VO 描述的是"业务用途"------专门为前端视图准备的数据盒子。

因此 EmployeeLoginVO 既是 POJO(普通 Java 对象),又是 VO(面向视图的对象)。

相关推荐
君不见,青丝成雪40 分钟前
SpringBoot项目占用内存优化
java·spring boot·后端
一叶飘零_sweeeet1 小时前
如何避免MyBatis二级缓存中的脏读
java·redis·mybatis
Trust yourself2431 小时前
IDEA控制台乱码(Tomcat)解决方法
java·tomcat·intellij-idea
##学无止境##2 小时前
解锁Java分布式魔法:CAP与BASE的奇幻冒险
java·开发语言·分布式
3Cloudream2 小时前
互联网大厂Java面试深度解析:从基础到微服务云原生的全场景模拟
java·spring boot·redis·elasticsearch·微服务·kafka·电商架构
想买CT5的小曹2 小时前
SpringBoot如何获取系统Controller名称和方法名称
java·spring boot·后端
叫我阿柒啊2 小时前
Java全栈开发工程师的面试实战:从基础到微服务
java·数据库·spring boot·微服务·node.js·vue3·全栈开发
九仞山2 小时前
LangChain4j入门一:LangChain4j简介及核心概念
java·ai·langchain·agents
岁忧2 小时前
(LeetCode 每日一题) 498. 对角线遍历 (矩阵、模拟)
java·c++·算法·leetcode·矩阵·go
做一位快乐的码农2 小时前
基于Spring Boot的旅行足迹分享社区的设计与实现/基于java的在线论坛系统
java·开发语言·spring boot