news 2026/9/3 2:08:46

java dao层的实体是DTO,还是VO,还是其他的?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java dao层的实体是DTO,还是VO,还是其他的?

在Java项目中,DAO层的实体通常指的是PO(Persistent Object,持久化对象)​ 或Entity(实体类),而不是DTO或VO。以下是详细解释:


1.PO(持久化对象) / Entity

  • 与数据库表直接映射,通常一个PO对应一张表。

  • 用于DAO层与数据库进行CRUD操作。

  • 一般使用JPA/Hibernate/MyBatis等ORM框架的注解(如@Entity@Table@Column)进行映射。

  • 示例:

    @Entity @Table(name = "user") public class User { @Id private Long id; private String name; // getters & setters }

2.DTO(Data Transfer Object,数据传输对象)

  • 用于层与层之间的数据传输(如Service → Controller,或Controller → 前端)。

  • 目的是封装数据、减少网络调用次数,可能组合多个PO的字段。

  • 示例:

    public class UserDTO { private String name; private String email; // 无数据库映射注解 }

3.VO(View Object,视图对象)

  • 用于展示层(如前端页面),根据UI需求定制字段。

  • 可能包含多个DTO/PO的组合、计算字段或格式化数据。

  • 示例:

    public class UserVO { private String displayName; private String avatarUrl; }

4.DAO层的角色

  • DAO层(Data Access Object)负责数据持久化操作(增删改查)。

  • 它的输入/输出通常是PO,因为PO直接对应数据库结构。

  • 在复杂查询时,DAO可能返回自定义对象(非表映射实体),这类对象可视为查询结果对象(Query Result Object),但仍属于PO的变体。


5.最佳实践与常见误区

对象

使用场景

是否用于DAO层?

PO

数据库映射

(主要用途)

DTO

层间数据传输

否(Service/Controller层)

VO

前端展示

否(Controller/View层)

  • 避免在DAO层使用DTO/VO:DAO应专注于持久化操作,不处理业务逻辑或展示逻辑。

  • 对象转换:通常通过工具(如MapStruct、Spring Converter)在PO、DTO、VO之间转换。


6.复杂场景示例

多表关联查询时,DAO层可能返回自定义对象(非严格PO):

// 非表映射的查询结果对象 public class UserOrderSummary { private String userName; private Integer orderCount; // 无@Entity注解 } // DAO接口 public interface UserDao { List<UserOrderSummary> findUserOrderSummary(); }

总结

  • DAO层实体首选PO/Entity,与数据库表结构一致。

  • DTO用于传输VO用于展示,二者不应出现在DAO层。

  • 保持分层清晰,避免对象混用,提高代码可维护性。

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

家长们都应该了解这些知识,保护孩子视力太重要了

家长们&#xff0c;咱们今天聊个绕不开的话题——孩子的视力保护。现在不管是校园里还是小区里&#xff0c;戴眼镜的孩子越来越多&#xff0c;有的甚至刚上小学就架起了厚重的镜片&#xff0c;不仅影响日常活动&#xff0c;还可能限制未来的专业选择和职业发展。所以说&#xf…

作者头像 李华
网站建设 2026/9/2 21:26:40

Miniconda环境下运行Diffusion模型生成艺术图像

Miniconda环境下运行Diffusion模型生成艺术图像 在AI创作浪潮席卷设计与艺术领域的今天&#xff0c;越来越多的研究者和开发者希望借助深度学习技术自动生成高质量的艺术图像。然而&#xff0c;一个常见的现实问题是&#xff1a;明明复现了论文代码&#xff0c;却因为环境依赖不…

作者头像 李华
网站建设 2026/9/2 21:26:26

NPC五电平逆变器。 并网逆变器PQ控制。 通过功率闭环控制,实现并网单位功率因数,即并网电流...

NPC五电平逆变器。 并网逆变器PQ控制。 通过功率闭环控制&#xff0c;实现并网单位功率因数&#xff0c;即并网电流与网侧电压同相位。 为了得到电网电网相位&#xff0c;采用基于双二阶广义积分器的锁相环&#xff0c;该锁相环可以快速准确无误的得到电网相位。 且在初始阶段&…

作者头像 李华
网站建设 2026/9/2 21:26:49

基于TMS320F28335 DSP的单相并网逆变器

一、系统架构与硬件配置 主控芯片 TMS320F28335&#xff1a;32位浮点DSP&#xff0c;主频150MHz&#xff0c;集成ePWM、ADC、CAP等外设。 功率拓扑 DC-DC级&#xff1a;Boost升压电路&#xff08;输入48V光伏模拟&#xff0c;输出400V DC&#xff09;。DC-AC级&#xff1a;单相…

作者头像 李华
网站建设 2026/9/3 1:36:51

华为OD机试 - 最佳信号覆盖问题 - 暴力枚举(Java 双机位C卷 100分)

华为OD机试 双机位C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的…

作者头像 李华
网站建设 2026/8/29 22:27:43

华为OD机试 - 朋友圈个数 - 递归回溯(Java 双机位C卷 200分)

华为OD机试 双机位C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的…

作者头像 李华