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

企业级Java 实体对象类定义规范

1. 查询参数类 (Query)

  • 命名规则: xxxQuery.java
  • 用途: 用于封装查询操作的请求参数,通常包含分页、过滤、排序等字段。与数据库查询或 API 请求紧密相关。
  • 示例: ProductQuery.javaUserQuery.java
  • 使用场景: 查询条件的封装,发送查询请求时使用。

2. 返回参数类 (VO)

  • 命名规则: xxxVo.java (VO = View Object)
  • 用途: 用于返回给前端的数据显示对象,通常包括展示所需的字段,可能会对数据进行格式化或者转换。与数据库对象和 DTO 对象存在差异,专注于展示层的数据结构。
  • 示例: ProductVo.javaUserVo.java
  • 使用场景: 前端展示数据时,直接作为返回结果。

3. 数据传输对象类 (DTO)

  • 命名规则: xxxDTO.java (DTO = Data Transfer Object)
  • 用途: 用于不同层之间传递数据的对象,通常用于服务层之间的数据传输。DTO 可能包含比 VO 更复杂的业务数据,并且可以进行序列化,传递的过程中可能涉及到字段的合并或分割。
  • 示例: ProductDTO.javaOrderDTO.java
  • 使用场景: 服务层或 API 层之间传递数据,通常包含业务相关数据。

4. 数据库对象类 (PO)

  • 命名规则: xxxPO.java (PO = Persistent Object)
  • 用途: 与数据库表结构一一对应,表示数据持久化层的对象。PO 主要用于与数据库进行交互,映射数据库表中的字段,通常只用于持久化操作。
  • 示例: ProductPO.javaUserPO.java
  • 使用场景: 用于数据库的增、删、改、查操作中,直接与数据库进行交互。

5. 信息类 (Info)

  • 命名规则: xxxInfo.java
  • 用途: 用于封装某个业务实体或对象的详细信息,通常包含多个维度的描述性信息,不直接与数据库交互,也不直接用于展示。它通常比 VODTO 更全面,涵盖了更多的业务上下文和业务逻辑。
  • 示例: ProductInfo.javaOrderInfo.java
  • 使用场景: 描述某个对象或业务实体的详细信息,可能用于业务逻辑层中的处理,或用于为展示层提供数据支持。

6. 服务层对象类 (Service)

  • 命名规则: xxxService.java
  • 用途: 封装业务逻辑的服务层对象,提供对外的 API 接口,通常负责调用 DAO 层(持久化层)以及其他业务逻辑处理。Service 类通常包含复杂的业务操作。
  • 示例: ProductService.javaUserService.java
  • 使用场景: 业务逻辑处理和服务接口暴露,协调多个业务模块。

7. 控制器类 (Controller)

  • 命名规则: xxxController.java
  • 用途: 用于处理 HTTP 请求,负责接收前端请求并调用服务层处理业务逻辑,最后将结果返回给客户端。通常会涉及到数据验证、权限控制等功能。
  • 示例: ProductController.javaUserController.java
  • 使用场景: 接收前端请求并将其交给服务层处理,返回相应结果。

8. 异常类 (Exception)

  • 命名规则: xxxException.java
  • 用途: 用于捕捉和处理特定业务场景下的异常,帮助业务流程的控制和错误处理。
  • 示例: ProductNotFoundException.javaUserUnauthorizedException.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; % 径向受压载荷大小,单位&#xff…...

网络安全抓包

#知识点: 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 …...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

windows系统MySQL安装文档

概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...