企业级Java 实体对象类定义规范
1. 查询参数类 (Query)
- 命名规则:
xxxQuery.java - 用途: 用于封装查询操作的请求参数,通常包含分页、过滤、排序等字段。与数据库查询或 API 请求紧密相关。
- 示例:
ProductQuery.java、UserQuery.java - 使用场景: 查询条件的封装,发送查询请求时使用。
2. 返回参数类 (VO)
- 命名规则:
xxxVo.java(VO = View Object) - 用途: 用于返回给前端的数据显示对象,通常包括展示所需的字段,可能会对数据进行格式化或者转换。与数据库对象和 DTO 对象存在差异,专注于展示层的数据结构。
- 示例:
ProductVo.java、UserVo.java - 使用场景: 前端展示数据时,直接作为返回结果。
3. 数据传输对象类 (DTO)
- 命名规则:
xxxDTO.java(DTO = Data Transfer Object) - 用途: 用于不同层之间传递数据的对象,通常用于服务层之间的数据传输。DTO 可能包含比 VO 更复杂的业务数据,并且可以进行序列化,传递的过程中可能涉及到字段的合并或分割。
- 示例:
ProductDTO.java、OrderDTO.java - 使用场景: 服务层或 API 层之间传递数据,通常包含业务相关数据。
4. 数据库对象类 (PO)
- 命名规则:
xxxPO.java(PO = Persistent Object) - 用途: 与数据库表结构一一对应,表示数据持久化层的对象。PO 主要用于与数据库进行交互,映射数据库表中的字段,通常只用于持久化操作。
- 示例:
ProductPO.java、UserPO.java - 使用场景: 用于数据库的增、删、改、查操作中,直接与数据库进行交互。
5. 信息类 (Info)
- 命名规则:
xxxInfo.java - 用途: 用于封装某个业务实体或对象的详细信息,通常包含多个维度的描述性信息,不直接与数据库交互,也不直接用于展示。它通常比
VO和DTO更全面,涵盖了更多的业务上下文和业务逻辑。 - 示例:
ProductInfo.java、OrderInfo.java - 使用场景: 描述某个对象或业务实体的详细信息,可能用于业务逻辑层中的处理,或用于为展示层提供数据支持。
6. 服务层对象类 (Service)
- 命名规则:
xxxService.java - 用途: 封装业务逻辑的服务层对象,提供对外的 API 接口,通常负责调用 DAO 层(持久化层)以及其他业务逻辑处理。
Service类通常包含复杂的业务操作。 - 示例:
ProductService.java、UserService.java - 使用场景: 业务逻辑处理和服务接口暴露,协调多个业务模块。
7. 控制器类 (Controller)
- 命名规则:
xxxController.java - 用途: 用于处理 HTTP 请求,负责接收前端请求并调用服务层处理业务逻辑,最后将结果返回给客户端。通常会涉及到数据验证、权限控制等功能。
- 示例:
ProductController.java、UserController.java - 使用场景: 接收前端请求并将其交给服务层处理,返回相应结果。
8. 异常类 (Exception)
- 命名规则:
xxxException.java - 用途: 用于捕捉和处理特定业务场景下的异常,帮助业务流程的控制和错误处理。
- 示例:
ProductNotFoundException.java、UserUnauthorizedException.java - 使用场景: 处理与业务相关的特定异常,确保程序的健壮性和错误的精确捕捉。
命名规范总结表
| 类名后缀 | 用途 | 示例 |
|---|---|---|
Query | 查询参数类 | ProductQuery.java, UserQuery.java |
Vo | 返回数据类(View Object) | ProductVo.java, UserVo.java |
DTO | 数据传输对象(Data Transfer Object) | ProductDTO.java, OrderDTO.java |
PO | 数据库对象(Persistent Object) | ProductPO.java, UserPO.java |
Info | 信息类(详细描述对象) | ProductInfo.java, OrderInfo.java |
Service | 服务类(业务逻辑类) | ProductService.java, UserService.java |
Controller | 控制器类(处理请求的类) | ProductController.java, UserController.java |
Exception | 异常类(业务异常类) | ProductNotFoundException.java, UserUnauthorizedException.java |
实际应用示例
假设有一个电子商务系统的产品模块,相关的 Java 类可能会按以下方式组织:
- 查询参数类:
ProductQuery.java— 用于封装查询条件,如产品分类、价格范围、品牌等。 - 返回数据类:
ProductVo.java— 返回给前端展示的产品信息,如名称、图片、价格等。 - 数据传输对象:
ProductDTO.java— 用于服务层之间传输产品数据,可能包含了产品的描述、价格、库存等信息。 - 数据库对象类:
ProductPO.java— 与产品数据库表一一对应,包含数据库表的字段。 - 信息类:
ProductInfo.java— 描述产品的详细信息,可能包括产品的属性、图片、评论、推荐等信息。 - 服务类:
ProductService.java— 处理产品相关的业务逻辑,如添加、删除、更新产品等。 - 控制器类:
ProductController.java— 接收前端请求,调用ProductService进行业务处理,并将结果返回给前端。 - 异常类:
ProductNotFoundException.java— 用于处理找不到产品的异常。
规范命名,不仅能确保类的职责清晰,还能够帮助团队成员在维护项目时快速理解各类对象的用途和功能。
相关文章:
企业级Java 实体对象类定义规范
1. 查询参数类 (Query) 命名规则: xxxQuery.java用途: 用于封装查询操作的请求参数,通常包含分页、过滤、排序等字段。与数据库查询或 API 请求紧密相关。示例: ProductQuery.java、UserQuery.java使用场景: 查询条件的封装,发送查询请求时使用。 2. 返…...
【网络云SRE运维开发】2025第2周-每日【2025/01/07】小测-【第7章 GVRP链路捆绑】理论和实操
文章目录 一、理论题1.1 GVRP协议在华为设备中的主要作用是什么?1.2 在华为交换机上,配置GVRP时,端口的注册模式有哪些?并简要说明其特点。1.3 简述华为设备中GVRP协议的工作过程。1.4 在华为交换机上配置GVRP时,如果两…...
蓝桥杯算法|练习记录
位运算 按位与运算符(&) 运算规则:两位同时为1,结果才为1,否则结果为0。例如, -3(在计算机中表示为1101)&5(0101) 0101(即十进制的1&…...
C语言 扫雷程序设计
目录 1.main函数 2.菜单打印menu函数 3.游戏game函数 4.宏定义 5.界面初始化 6.打印界面 7.设置雷 8.统计排查坐标周围雷的个数 9.排查雷 10.总代码 test.c代码 game.h代码 game.c代码 结语: 一个简单的扫雷游戏,通过宏定义可以修改行列的…...
CSS语言的文件操作
CSS语言文件操作浅析 CSS(层叠样式表)是一种用于描述HTML文档表现的样式表语言。它负责设置网页的视觉效果,包括文字、颜色、布局等。然而,CSS不仅仅是用于修饰页面,它在现代开发中的作用正变得愈发重要。在本文中&am…...
前端-计算机网络篇
一.网络分类 1.按照网络的作用范围进行分类 (1)广域网WAN(Wide Area Network) 广域网的作用范围通常为几十到几千公里,因而有时也称为远程网(long haul network)。广域网是互联网的核心部分,其任务是长距离运送主机…...
行为分析:LSTM、3D CNN、SlowFast Networks。这三者的优缺点
在行为分析任务中,**LSTM**、**3D CNN** 和 **SlowFast Networks** 是三种常用的深度学习模型。它们各有优缺点,适用于不同的场景和需求。以下是它们的详细对比: --- ### **1. LSTM(Long Short-Term Memory)** LSTM …...
【HarmonyOS NEXT】鸿蒙应用使用后台任务之长时任务,解决屏幕录制音乐播放等操作不被挂起
【HarmonyOS NEXT】鸿蒙应用使用后台任务之长时任务,解决屏幕录制音乐播放等操作不被挂起 一、前言 1.后台是什么? 了解后台任务和长时任务前,我们需要先明白鸿蒙的后台特性:所谓的后台,指的是设备返回主界面、锁屏、…...
STM32-WWDG/IWDG看门狗
WWDG/IWDG一旦开启不能关闭,可通过选项字节在上电时启动硬件看门狗,看门狗计数只能写入不能读取。看门狗启用时,T6bit必须置1,防止立即重置。 一、原理 独立看门狗-超时复位 窗口看门狗-喂狗(重置计数器,…...
基于视觉惯性 SLAM(VSLAM)、相机和 IMU 数据的融合执行 6 自由度位姿跟踪
案例来源:https://spectacularai.github.io/docs/sdk/wrappers/oak.html 适配相机:带IMU的 OAK-D 系列相机 基于视觉惯性 SLAM(VSLAM)、相机和 IMU 数据的融合执行 6 自由度位姿跟踪 ~~~~~~~(分界线)~~~~~…...
Matlab仿真径向受压圆盘光弹图像
Matlab仿真径向受压圆盘光弹图像-十步相移法 主要参数 % 定义圆盘参数 R 15; % 圆盘半径,单位:mm h 5; % 圆盘厚度,单位:mm P 300; % 径向受压载荷大小,单位ÿ…...
网络安全抓包
#知识点: 1、抓包技术应用意义 //有些应用或者目标是看不到的,这时候就要进行抓包 2、抓包技术应用对象 //app,小程序 3、抓包技术应用协议 //http,socket 4、抓包技术应用支持 5、封包技术应用意义 总结点:学会不同对象采用…...
WebSocket 测试调试:工具与实践
在前五篇文章中,我们深入探讨了 WebSocket 的基础原理、服务端开发、客户端实现、安全实践和性能优化。今天,让我们把重点放在测试和调试上,看看如何确保 WebSocket 应用的质量和可靠性。我曾在一个实时通讯项目中,通过完善的测试和调试策略,将线上问题的发现时间从小时级缩短到…...
ArmSoM RK3588/RK3576核心板,开发板网络设置
ArmSoM系列产品都搭配了以太网口或WIFI模块,PCIE转以太网模块、 USB转以太网模块等,这样我们的网络需求就不止是上网这么简单了,可以衍生出多种不同的玩法。 1. 网络连接 连接互联网或者组成局域网都需要满足一个前提–设备需要获取到ip&a…...
【学Rust开发CAD】1 环境搭建
文章目录 一、搭建C/C编译环境二、安装Rust三、配置 PATH 环境变量四、验证安装结果五、安装编辑工具 一、搭建C/C编译环境 Rust 的编译工具依赖 C 语言的编译工具,这意味着你的电脑上至少已经存在一个 C 语言的编译环境。如果你使用的是 Linux 系统,往…...
数据结构与算法之二叉树: LeetCode 108. 将有序数组转换为二叉搜索树 (Ts版)
将有序数组转换为二叉搜索树 https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ 描述 给你一个整数数组 nums ,其中元素已经按 升序 排列请你将其转换为一棵 平衡 二叉搜索树 示例 1 输入:nums [-10,-3,0,5,9…...
Java 多线程之@Async
SpringBoot 中使用 Async 使用 Async 注解步骤: 添加 EnableAsync 注解。在主类上或者 某个类上,否则,异步方法不会生效 添加 Async注解。在异步方法上添加此注解。异步方法不能被 static 修饰需要自定义线程池,则可以配置线程池…...
代码随想录day38 动态规划6
题目:322.零钱兑换 279.完全平方数 139.单词拆分 多重背包 背包总结 需要重做:322,139 322. 零钱兑换 思路:零钱,可取多次-》完全背包。 注意: 五部: 1.dp[j]:价值为j的时候,最…...
LabVIEW无标题的模态VI窗口的白框怎么去除?
在LabVIEW中,如果你遇到无标题的模态(modal)VI窗口显示有一个白框,通常是由于VI界面的一些属性或者控件设置问题导致的。为了去除这个白框,可以尝试以下几种方法: 1. 检查VI窗口属性设置 确保你的VI窗口属…...
iOS - 原子操作
在 Objective-C 运行时中,原子操作主要通过以下几种方式实现: 1. 基本原子操作 // 原子操作的基本实现 #if __has_feature(c_atomic)#define OSAtomicIncrement32(p) __c11_atomic_add((_Atomic(int32_t) *)(p), 1, __ATOMIC_RELAXED) #define …...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
