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

PO、VO、DAO、BO、DTO、POJO区分

一 分层领域模型规约:

  • DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
  • DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。
  • BO(Business Object):业务对象,由 Service 层输出的封装业务逻辑的对象。
  • AO(ApplicationObject):应用对象,在Web层与Service层之间抽象的复用对象模型, 极为贴近展示层,复用度不高。
  • VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
  • Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用 Map 类来传输。

领域模型命名规约:

  • 数据对象:xxxDO,xxx即为数据表名
  • 数据传输对象:xxxDTO,xxx为业务领域相关的名称。
  • 展示对象:xxxVO,xxx一般为网页名称。
  • POJO:DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。

二 、具体含义

PO (persistant object )持久对象 (ENTITY)

可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择

VO (value object) 值对象

通常用于业务层之间的数据传递,PO只能用在数据层,VO用在商业逻辑层和表示层。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。

BO (Business Object) 业务对象层

表示应用程序领域内“事物”的所有实体类。这些实体类驻留在服务器上,并利用服务类来协助完成它们的职责。

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

主要用于远程调用等需要大量传输对象的地方。比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。

POJO (Plain Old Java Objects) 简单的Java对象

实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来,而且简称比较直接。其中有一些属性及其getter、setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用。

DAO 数据访问对象
PO 数据访问参数对象
VO 数据访问返回对象
DTO 数据传输对象
BO 业务对象

相关文章:

PO、VO、DAO、BO、DTO、POJO区分

一 分层领域模型规约: DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。BO(Business Object):业务对象,由 Service 层输出的封装…...

MobPush Flutter平台插件

集成准备 注册账号 使用PushSDK之前,需要先在MobTech官网注册开发者账号,并获取MobTech提供的AppKey和AppSecret,详情可以点击查看注册流程 MobPush后台配置 注册MobTech账号后,需要在MobTech后台进行相关信息的配置&#xff…...

机器学习面试题库:K-means

一、简述K-means算法的原理及工作流程? 原理: K-means是一个无监督的聚类算法。它的主要目的是对同一组数据对象进行分类。其原理是基于样本间的相似性来聚类分析的,即将所有样本分为K个簇,使得同一个簇间中样本相似性最高&#…...

Linux:文本三剑客之awk

Linux:文本三剑客之awk 一、awk编辑器1.1 awk概述1.2 awk工作原理1.3 awk与sed的区别 二、awk的应用2.1 命令格式2.2 awk常见的内建变量(可直接用) 三、awk使用3.1 按行输出文本3.2 按字段输出文本3.3 通过管道、双引号调用 Shell 命令 一、a…...

如何借助Kafka持久化存储K8S事件数据?

大家应该对 Kubernetes Events 并不陌生,特别是当你使用 kubectl describe 命令或 Event API 资源来了解集群中的故障时。 $ kubectl get events15m Warning FailedCreate …...

一种基于非均匀分簇和建立簇间路由的算法的无线传感器网络路由协议(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 本文准备了一种路由方法,该方法使传感器通过有效地使用能量将数据从发送方加载到接收器,因为它在 LEAC…...

usb摄像头驱动打印信息

usb摄像头驱动打印信息 文章目录 usb摄像头驱动打印信息 在ubuntu中接入罗技c920摄像头打印的信息如下: [ 100.873222] usb 3-2: new high-speed USB device number 5 using xhci_hcd [ 101.230728] usb 3-2: New USB device found, idVendor046d, idProduct08e5 …...

银行半结构化和无领导群面注意事项

银行可以同时报考多家,因此部分同学也积累了不少宝贵的面试“失败”经验。今天小编就来给大家说说半结构化和无领导群面的注意事项,从如信银行考试中心了解到的整理如下: 一、半结构化面试注意事项: 半结构化面试更侧重于了解考生…...

今天公司来了个拿 30K 出来的测试,算是见识到了基础的天花板

今天上班开早会就是新人见面仪式,听说来了个很厉害的大佬,年纪还不大,是上家公司离职过来的,薪资已经达到中高等水平,很多人都好奇不已,能拿到这个薪资应该人不简单,果然,自我介绍的…...

SSM整合(单元测试、结果封装、异常处理)

文章目录 1,SSM整合1.1 流程分析1.2 整合配置步骤1:创建Maven的web项目步骤2:添加依赖步骤3:创建项目包结构步骤4:创建SpringConfig配置类步骤5:创建JdbcConfig配置类步骤6:创建MybatisConfig配置类步骤7:创建jdbc.properties步骤8:创建SpringMVC配置类步…...

C++ list

C list 📟作者主页:慢热的陕西人 🌴专栏链接:C 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容介绍了C中list和相关接口的使用 Clist C listⅠ. li…...

【JavaScript】ES6新特性(2)

5. 字符串扩展 5.1 includes函数 判断字符串中是否存在指定字符 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name&q…...

CST-FSS/周期谐振单元的仿真

引言 这几天要仿真超表面,上下求索CST有关相关内容的教程,视频倒是有不少,不过发现很多人忽略了官方帮助文档。本文以官方帮助文档为基础,写一个有关使用CST实现FSS/超表面这类周期结构的笔记。 官方帮助文档 CST有关FSS的内容使用了一个金属谐振圆环作为例子,这是由于…...

重新理解RocketMQ Commit Log存储协议

最近突然感觉&#xff1a;很多软件、硬件在设计上是有root reason的&#xff0c;不是by desgin如此&#xff0c;而是解决了那时、那个场景的那个需求。一旦了解后&#xff0c;就会感觉在和设计者对话&#xff0c;了解他们的思路&#xff0c;学习他们的方法&#xff0c;思维同屏…...

ROS 开发环境搭建(虚拟机版本)(一)

相关工具&#xff0c;以及镜像&#xff08;以后有用&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1xgtp-XGFFNCACV_-0TJO2A 提取码&#xff1a;ar1w 1. 下载vm虚拟机&#xff08;我选择的官方最新的vm虚拟机&#xff09;&#xff0c;安装好 2.安装百度网盘里面的…...

vue3做项目是需要注意的事项

Vue.js是一款非常优秀的前端开发框架&#xff0c;其第三代版本Vue3已经发布了。Vue3在性能、体验和功能等方面有了很大的提升&#xff0c;因此它成为了前端工程师们关注的焦点之一。在使用Vue3做项目时&#xff0c;有一些需要注意的事项&#xff0c;以下是对这些注意事项的介绍…...

docker日志轮转

cat /etc/docker/daemon.json { "log-driver": "json-file", "log-opts": { "max-size": "250m", "max-file": "3" } }...

论文阅读_音频压缩_Encodec

论文信息 name_en: High Fidelity Neural Audio Compression name_ch: 高保真神经音频压缩 paper_addr: http://arxiv.org/abs/2210.13438 date_read: 2023-04-27 date_publish: 2022-10-24 tags: [‘深度学习’,‘音频’] author: Alexandre Dfossez, Meta AI, FAIR Team cod…...

第06章_多表查询

第06章_多表查询 多表查询&#xff0c;也称为关联查询&#xff0c;指两个或更多个表一起完成查询操作。 前提条件&#xff1a;这些一起查询的表之间是有关系的&#xff08;一对一、一对多&#xff09;&#xff0c;它们之间一定是有关联字段&#xff0c;这个关联字段可能建立了…...

自学黑客(网络安全)有哪些技巧——初学者篇

很多人说&#xff0c;要想学好黑客技术&#xff0c;首先你得真正热爱它。 热爱&#xff0c;听着多么让人激情澎湃&#xff0c;甚至热泪盈眶。 但很可惜&#xff0c;“热爱”这个词对还没入门的小白完全不管用。 如果一个人还没了解过你就说爱你&#xff0c;不是骗财就是骗色…...

Wan2.2-I2V-A14B Java面试热点:如何设计高并发视频生成任务系统?

Java面试热点&#xff1a;如何设计高并发视频生成任务系统&#xff1f; 1. 场景与挑战 视频生成服务正成为内容创作领域的热门需求&#xff0c;而高并发场景下的系统设计是Java后端开发面试中的常见考察点。假设我们需要基于Wan2.2-I2V-A14B模型构建一个视频生成平台&#xf…...

Universal Control Remapper使用难题攻克:3个核心问题的系统解决方案

Universal Control Remapper使用难题攻克&#xff1a;3个核心问题的系统解决方案 【免费下载链接】UCR Universal Control Remapper [ALPHA] 项目地址: https://gitcode.com/gh_mirrors/ucr/UCR 作为一款开源的控制器映射工具&#xff0c;Universal Control Remapper&am…...

restrict关键字:提升指针性能的提示

文章目录理解 restrict 关键字&#xff1a;提升指针性能的提示 &#x1f680;什么是 restrict 关键字&#xff1f; &#x1f914;为什么 restrict 重要&#xff1f; &#x1f4a1;如何使用 restrict&#xff1f; &#x1f6e0;️代码示例&#xff1a;性能对比 &#x1f4ca;Mer…...

MiniCPM-V-2_6数据中心:机柜图识别+温控与负载均衡建议

MiniCPM-V-2_6数据中心&#xff1a;机柜图识别温控与负载均衡建议 1. 项目背景与价值 在现代数据中心运维中&#xff0c;机柜设备识别和温度监控是两项关键任务。传统方法需要人工巡检和手动记录&#xff0c;效率低下且容易出错。MiniCPM-V-2_6作为先进的视觉多模态模型&…...

ESP32驱动MPU-9250 DMP实现硬件级运动处理

1. SparkFun MPU-9250 DMP Arduino库深度解析&#xff1a;面向ESP32平台的嵌入式运动处理实践指南1.1 库定位与工程价值重定义尽管原始README明确声明该库“currently only supports and is tested on SAMD processors”&#xff0c;但其核心设计——基于Invensense官方DMP固件…...

OpenClaw硬件配置建议:流畅运行Qwen2.5-VL-7B的电脑要求

OpenClaw硬件配置建议&#xff1a;流畅运行Qwen2.5-VL-7B的电脑要求 1. 为什么需要关注硬件配置&#xff1f; 去年夏天&#xff0c;我第一次尝试在MacBook Pro上部署OpenClaw对接Qwen2.5-VL-7B模型时&#xff0c;经历了长达3小时的"烤机"体验——风扇狂转、机身发烫…...

测试人员聚焦于AI的4个核心方向

测试工程师的核心竞争力将聚焦于“AI无法替代的业务理解与质量设计能力”&#xff0c;具体可归纳为4个核心方向&#xff1a; 1. Prompt工程能力&#xff1a;精准提炼业务需求与测试要点&#xff0c;将“模糊需求”转化为“AI可理解的精准指令”&#xff0c;这是高效协同AI的基础…...

Blynk物联网开发终极指南:如何5分钟内构建云端控制应用

Blynk物联网开发终极指南&#xff1a;如何5分钟内构建云端控制应用 【免费下载链接】blynk-library Blynk library for IoT boards. Works with Arduino, ESP32, ESP8266, Raspberry Pi, Particle, ARM Mbed, etc. 项目地址: https://gitcode.com/gh_mirrors/bl/blynk-librar…...

OpenClaw技能调试技巧:千问3.5-35B-A3B-FP8任务失败的日志分析方法

OpenClaw技能调试技巧&#xff1a;千问3.5-35B-A3B-FP8任务失败的日志分析方法 1. 问题背景与调试困境 上周我尝试用OpenClaw对接千问3.5-35B-A3B-FP8模型实现一个自动化流程&#xff1a;让AI助手读取截图中的文字内容&#xff0c;整理成结构化数据后存入本地Excel文件。结果…...

OpenClaw低代码开发:Qwen3-32B镜像+RTX4090D快速原型设计

OpenClaw低代码开发&#xff1a;Qwen3-32B镜像RTX4090D快速原型设计 1. 为什么选择这个技术组合&#xff1f; 去年冬天的一个深夜&#xff0c;我盯着屏幕上重复执行的测试脚本&#xff0c;突然意识到自己正在把宝贵的时间浪费在机械操作上。作为独立开发者&#xff0c;我们常…...