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

PO BO VO DTO POJO DAO DO概念

1.1 PO

它的含义是Persistent Object,即持久化对象。

  • 职责:与数据库表严格1:1映射,仅承载数据存储结构
  • 特征
    • 属性与表字段完全对应
    • 无业务逻辑方法(仅有getter/setter)

1.2 DAO

它的含义是Data Access Object,即数据访问对象。

  • 职责封装所有数据库操作(CRUD),隔离业务与存储细节
  • 特征
    • 接口方法对应SQL操作
    • 返回PO或PO集合

1.3 BO

它的含义是Business Object,即业务对象。

  • 职责封装核心业务逻辑,聚合多个PO完成复杂操作
  • 特征
    • 包含业务状态机、校验规则
    • 可持有多个PO引用

1.4 DTO

它的含义是Data Transfer Object,即数据传输对象。

  • 职责跨层/跨服务数据传输,屏蔽敏感字段
  • 特征
    • 属性集是PO的子集(如排除password字段)
    • 支持序列化(实现Serializable

1.5 VO

它的含义是View Object,即视图对象。

  • 职责适配前端展示,包含渲染逻辑
  • 特征
    • 属性可包含格式化数据(如日期转yyyy-MM-dd
    • 聚合多表数据(如订单VO包含用户名字)

1.6 POJO

它的含义是Plain Old Java Object,即普通Java对象。

  • 职责基础数据容器,可扮演PO/DTO/VO角色
  • 特征
    • 只有属性+getter/setter
    • 无框架依赖(如不继承Spring类)

总结

关于对象的4个核心原则:

  1. 单一职责
    PO只存数据,BO只管业务,VO只负责展示——绝不越界!
  2. 安全隔离
  • PO永不出DAO层(防数据库泄露)
  • VO永不出Controller(防前端逻辑污染服务)
  • 性能优先
  • 大对象转换用MapStruct(编译期生成代码)
  • 嵌套集合用批量查询(杜绝N+1)
  • 适度设计
  • 10张表以内的系统:可用POJO一撸到底
  • 百张表以上核心系统:必须严格分层
http://www.lryc.cn/news/622746.html

相关文章:

  • Linux第十四讲:网络基础概念
  • Jenkins Pipeline中参数化构建
  • Android 移动端 UI 设计:前端常用设计原则总结
  • 后台管理系统-3-vue3之左侧菜单栏和头部导航栏的静态搭建
  • flowable汇总查询方式
  • SAP-FI配置与业务解析之内部交易核算
  • 双向SSL认证之Apache实战配置
  • 3 种方式玩转网络继电器!W55MH32 实现网页 + 阿里云 + 本地控制互通
  • 数据清洗与机器学习贷款偿还预测建模
  • (职业分析)讨好型人格适合什么职业?
  • 【LLM微调】
  • 每日算法刷题Day62:8.16:leetcode 堆8道题,用时2h30min
  • java项目中什么时候使用static、final
  • Docker数据卷挂载和本地目录挂载
  • 暴雨服务器:以定制化满足算力需求多样化
  • dify 调用本地的 stable diffusion api生成图片的工作流搭建
  • 掌握长尾关键词优化SEO技巧
  • 神经网络 常见分类
  • 分布式存储与存储阵列:从传统到现代的存储革命
  • 本地部署前端构建工具 Vite 并实现外部访问
  • 模式组合应用-桥接模式(一)
  • 容器化部署:用Docker封装机器翻译模型与服务详解
  • 她的热情为何突然冷却?—— 解析 Kafka 吞吐量下降之谜
  • 数据结构:满二叉树 (Full Binary Tree) 和 完全二叉树 (Complete Binary Tree)
  • 无痕HOOK 检测及对抗
  • 数据结构:构建 (create) 一个二叉树
  • OpenJDK 17的C1和C2编译器实现中,方法返回前插入安全点(Safepoint Poll)的机制
  • 【lubancat】鲁班猫4实现开机后自动播放视频
  • 攻击者如何毒害人工智能工具和防御系统
  • 罗技MX Anywhere 2S鼠标修复记录