当前位置: 首页 > news >正文

日总结 23

在软件开发中,DTO(Data Transfer Object,数据传输对象)和 Entity(实体)是两个不同场景下的核心概念,主要区别体现在用途、设计目的、属性特征等方面,具体如下:

  1. 定义与核心用途
    Entity(实体)本质是与数据库表结构映射的持久化对象,用于表示业务领域中的核心实体(如用户、订单、商品等),是数据在持久层(如数据库)中的 “镜像”。核心用途:直接与数据库交互(通过 ORM 框架如 MyBatis、JPA 等),承载数据库的字段信息,是业务逻辑层操作数据的基础。
    DTO(数据传输对象)本质是用于跨层 / 跨服务传输数据的 “容器”,专门用于在不同层(如 Controller 与 Service、Service 与客户端)或不同服务(如微服务间)传递数据。核心用途:优化数据传输,仅包含传输所需的字段,避免不必要的信息暴露或冗余传输。
  2. 设计目的差异
    Entity 的设计目的:完全贴合数据库表结构,需要包含表中的所有字段(如主键、外键、冗余字段、创建时间、版本号等),以确保能完整映射和操作数据库数据。例如:用户表user有id(主键)、username、password(加密存储)、email、create_time、version(乐观锁),对应的 Entity 会包含所有这些字段。
    DTO 的设计目的:按需设计,仅包含 “传输场景中需要的字段”,目的是减少数据传输量、隐藏敏感信息、适配接口需求。例如:前端展示用户信息时,不需要password(敏感)、version(内部字段),此时 DTO 可能只包含id、username、email。
  3. 属性与行为差异
    Entity:
    属性:与数据库字段一一对应,可能包含 ORM 注解(如@Id、@Column)、关联关系(如@OneToMany)等。
    行为:可能包含简单的业务逻辑方法(如isVip()判断用户是否为会员),或与持久化相关的逻辑(如自动更新update_time)。
    状态:在 ORM 框架中,Entity 可能是 “持久态”(与数据库会话关联,修改后会自动同步到数据库)。
    DTO:
    属性:仅包含传输所需字段,字段名可能与 Entity 不同(如前端需要userName,而 Entity 是username),无 ORM 注解。
    行为:通常是 “纯数据载体”,仅包含 get/set 方法,不包含业务逻辑(否则会违背 “传输对象” 的设计初衷)。
    状态:无状态(Stateless),仅在传输过程中临时存在,不与数据库会话关联。
  4. 安全性与灵活性
    Entity:包含数据库全量字段(可能有密码、权限等敏感信息),若直接用于传输(如返回给前端),会导致敏感信息泄露,且无法灵活适配不同接口的需求(如不同接口需要不同字段)。
    DTO:可根据场景灵活裁剪字段,过滤敏感信息(如去掉密码、身份证号),同时支持字段重命名、组合多个 Entity 的信息(如订单 DTO 包含用户姓名 + 商品名称),更适配接口交互。
    总结:核心区别表格
    维度 Entity(实体) DTO(数据传输对象)
    核心用途 映射数据库表,操作持久化数据 跨层 / 跨服务传输数据
    字段设计 与数据库表完全一致 仅包含传输所需字段
    业务逻辑 可能包含简单业务逻辑 无业务逻辑,仅 get/set
    状态 可能为持久态(与数据库关联) 无状态,仅临时存在
    安全性 包含敏感字段,不适合直接传输 过滤敏感字段,适合传输
    典型使用场景
    当需要从数据库查询数据并返回给前端时:
    用 Entity 从数据库查询完整数据;
    将 Entity 转换为 DTO(只保留前端需要的字段);
    前端接收 DTO 数据,避免敏感信息泄露和冗余传输。
    当接收前端提交的数据并保存到数据库时:
    前端传递 DTO(包含用户输入的字段);
    将 DTO 转换为 Entity(补充数据库所需的其他字段,如create_time);
    用 Entity 执行数据库插入操作。
http://www.gsyq.cn/news/42132.html

相关文章:

  • [题解]P10277 [USACO24OPEN] Bessies Interview S
  • UE:论运行时动画录制的关键-正确获取骨骼数据与保存
  • 线性基相关
  • 低代码权限管理安全合规指南:守住数据安全的 “最后一道防线”
  • 2025-11-06
  • 关于waybar状态栏颜文字乱码问题
  • P10277 [USACO24OPEN] Bessies Interview S 题解
  • AI 时代的数据库进化论 —— 从向量到混合检索
  • vue 3.x 前端导出功能
  • 最高法-合同目的的认定
  • 2025年恒温恒湿机标杆厂家最新推荐:中焓环境,档案室恒湿机/精密恒温恒湿机/吊顶恒温恒湿机/档案室恒温恒湿机,定义环境控制精准新标准
  • 酸角糕行业发展趋势解析:2025年十大品牌综合测评与选择指南
  • [题解]P6717 [CCO 2018] Boring Lectures
  • Bigtop 从零开始搭建大数据集群
  • chatgpt-to-md优化并重新复习
  • SaaS版MES系统PC端后台特性清单与设计说明
  • 2025年水上游乐及泳池设备标杆厂家推荐:山东汇川,室内水上乐园/儿童水上乐园/大型水上乐园/室内泳池/定制化服务引领行业新标​
  • 2025年冷冻式干燥机标杆厂家最新推荐:凌宇机械,冷冻式压缩空气干燥机/风冷高温冷冻式干燥机/水冷高温冷冻式干燥机/吸附式干燥机/以高效节能与全场景方案树立行业新标准
  • 2025优质媒体服务商推荐榜:媒体邀约靠谱平台助力品牌高效传播
  • 2025大连汽车凹陷修复厂家推荐榜:震城汽车领衔,汽车数据修复厂家靠谱机构守护原厂漆质感
  • android音频低延时设计:Fast Mixer官方文档 - 详解
  • 2025 年在线监测系统厂家最新推荐榜单:洁净环境、尘埃粒子、洁净室、无尘室等设备品牌技术与应用全面解析尘埃粒子在线监测系统/无尘室在线监测系统公司推荐
  • 2025年资质齐全的婚礼酒店排名,口碑好的婚礼酒店机构
  • 评估工程正成为下一轮 Agent 演进的重点
  • 前端的同学,终于要起飞啦,Github 6.3k star + ,免费可商用的UI元素库!!!
  • 2025 年砝码源头厂家最新推荐排行榜:聚焦优质供应商,助力精准计量选型,涵盖不锈钢 / 铸铁 / 天平 / 标准砝码品牌
  • 2025年昆明盛鲜智慧农贸市场推荐,盛鲜智慧集贸民生工程新标杆
  • axios 取消重复请求
  • .NET 开发:通过 C# 提取 PDF 中的图片
  • 机器人焊接混合气降本案例