史上最全总结!Util、POJO、domain、entity、model、DAO、DTO、view、mapper、service、controller的作用和区别分析

article/2025/10/7 8:24:03

文章目录

  • 前言
  • 工具类层
    • Util
  • 数据层
    • POJO对象
    • domain
    • entity
    • model
    • view
    • DTO
    • 总结
  • 数据访问层
    • DAO
    • mapper
  • 业务层
    • service
  • 控制层
    • Controller


前言

做开发项目时,总会遇到这些包,理清他们的层次,非常有助于我们对于项目的理解和建立。

现阶段CSDN上貌似没有很系统,很详细的关于层级类的解释。因此总结了一下自己的经验和思考,也算是小小的回馈一下一直帮助自己的CSDN。


工具类层

Util

util = 工具

顾明思义,util层就是存放工具类的地方,对于一些独立性很高的小功能,或重复性很高的代码片段,可以提取出来放到Util层中。


数据层

POJO对象

POJO = plain ordinary Java object = 普通Java对象

PO:持久对象,与数据库中的表相映射的Java对象

VO:业务层之间数据传递的对象

POJO:简单无规则Java对象,只有属性+get+set方法

下面要讲的这几个包,本质上都是POJO类


domain

domain = 域

域是一个大范围,如简历域包括工作经验表、项目经验表、简历基本信息表。 在domain包中,就可以定义一个大的简历对象,将三个表的内容整合在一个对象中,作为整体操作。


entity

entity = 实体

严格和数据库相对应,数据库中有什么字段,entity包中的类就有什么字段。因此当操作表时,操作这个类即可。

比如user表中有name、id、age,则entity包中对应的同名类也只有这三个同名属性。


model

Model = 模型

当用model当包名时,一般里面存的是实体类的模型,是用来给后端用的。

比如user表中有name、id、age,出于安全原因,我们需要把用户的密码定义在另一表中,即user_passwd表,但进行相关操作时,我们往往需要将两个表关联使用,每次定义都很麻烦。

因此可以在model层中定义user_model类,将user表中的信息与user_passwd表中的信息整合成一张综合表,这样在进行操作时只需调用综合表,就可以完成对两个表的关联操作


view

view = 视图

当用view当包名时,一般里面存放的是对实体表的映射类(视图类),是用来给前端用的。

即:有时候我们仅仅需要获得某一个表的几个字段,所以此时可以用view存储这几个字段。

比如user表中有name、id、age,出于某些原因,我们只需要向用户展示name和id值,但进行相关操作时,我们往往需要对user表进行很复杂读处理,每次定义都很麻烦。

因此可以在view层中定义user_view类,将user表中的name、id存入user_view视图,这样在进行操作时只需调用视图表,就可以完成相对应的操作


DTO

DTO = Data Transfer Object = 数据传输对象,与view的用法相同,不过是叫法不同


总结

  • 如果想对几个表综合操作,就用domain

  • 如果是严格对数据库表操作,就用entity

  • 如果想显示某个几个表的综合信息,就用model,注意model包一般放在service层。

  • 如果只想展示某个表中的几段信息,就用view,注意view包一般放在controller层

  • 上述包中的类都属于POJO类。


数据访问层

DAO

主要针对于数据表的操作,可以理解为一张数据表,就有一个DAO与之对应,与数据库的操作,增删改查等方法

举例:对于user类,其对应的dao包就是对user表中数据的增删改查方法。


mapper

mapper层 = dao层,若使用mybatis框架,则其生成的类名字是mapper,其实就是dao层。


业务层

service

由于Dao里面存放了对表操作的方法,entity类中存放了映射表的POJO类。

Service的作用就是将Dao和entity类整合起来,进行再次封装,封装成一个方法,我们调用这个方法,就实现了对某个表的增删改查操作。


控制层

Controller

负责请求转发,接受页面传递过来的参数,根据参数的不同,是调用不同的Service层方法进行操作,操作完成后将返回结果传递给页面。


喜欢就点个赞吧!


http://chatgpt.dhexx.cn/article/XscUwdcV.shtml

相关文章

vivado case_【vivado(3)】序列检测/状态机

手机上不好看可用电脑看 (1)首先建立一个工程名叫seq_det: 详细步骤可查看: 【vivado(1)】vivado软件的简单使用 【vivado(2)】计数器/testbench仿真 (2)建立一个design source如下所示: 右击design source, 选择add or create design source, 然后next 选择create file, …

vivado dcp生成

dcp与edif (write_edif命令生成) 比较: dcp主要有两个优点:第一个不需要手动生成stub文件,dcp是一个 压缩包里面包含所有文件。 第二个不需要xdc,尤其对于使用ip的设计。同时还可以使用加密功能。 不同阶段产生的dcp也不相同&a…

vivado ip打包归档

一般来说,要保存vivado工程使用的ip只需要xci文档即可。 但xci文档不仅仅是包含对应ip的配置信息,同样记录了一些path路径,以及ip核的属性(core container/ooc等) 使能core container后,将会以xcix方式保存ip核信息&…

Vivado驱动安装

一、卸载 二、打开Vivado 1 、 2 、 3、 4、 确认即可 5、安装证书 6、安装驱动 三、更新驱动程序

vivado2020.2导入原工程IP

vivado2020.2导入原工程IP 将原工程IP导入新工程中在新工程中添加每个IP的xci文件 将原工程IP导入新工程中 vivado 2022.2的IP在当前工程中.srcs中IP目录中,如下图: 将所需要转移的IP将完整的文件夹复制到新工程同样的目录中。 在新工程中添加每个IP的…

vivado 配置matlab,Matlab vivado

FPGA很多时候是用来做信号处理,而做信号处理都离不开Matlab。如通信中的调制解调、纠错码、各类编解码,这些都离不开Matlab,因为Matlab中simulink有非常丰富的库,方便客户建模和仿真。 以前modelsim 通过simulinx建模后&#xff0…

vivado使用方法

一、新建工程 首先打开vivado2017.4 点击create project 点击next 为新建的工程起名字,路径和名字都不要有中文 起好名字后点击next 起好名字后点击next 选择RTL project,勾选do not specify sources at this time,表示以后再配置资源文件 选…

【vivado UG学习】Synthesis策略学习

目录 1.1 综合方法1.2 使用Sythesis1.2.1 Sythesis设置1.2.2 创建运行策略1.2.3 控制文件编译顺序 1.2 运行Synthesis1.2.1 使用Tcl运行Synthesis1.2.2 RTL synthesis的多线程处理 参考文档 综合是将rtl指定的设计转换为门级表示的过程 1.1 综合方法 Vivado,可以&…

vivado filemgmt 20-2001

这个问题可能和vivado的打开路径有关,最好在工程路径下的shell中打开vivado在选择当前工程, 实测我遇到这个现象就是这个问题: 换到当前工程目录后:vivado在打开的位置都会生成一些log/jou文件等 参考: Xilinx Custo…

vivado 和 modesim 联合仿真快速修改重仿

vivado与modelsim的联合仿真(一)_坚持-CSDN博客_modelsim和vivado 1 编译联合仿真库 tool → compile_simulation_libraries ,选择simulator 为 modelsim simulator,填写好 compiled library location(联合库存放地址),simulator ex…

Vivado设置

1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除; 2.未经原作者允许不得转载本文内容,否则将视为侵权; 3.转载或者引用本文内容请注明来源及原作者; 4.对于不遵…

vivado常见IP介绍

转自:微信公众号:Lauren的FPGA 目前,越来越多的工程师会用到Vivado IP Integrator(IPI)。它的强大之处在于通过实例化和互连IP构建复杂的设计。现在的IPI中,不仅可以添加Vivado IP,还可以添加用…

vivado工程打包

一般使用自带archive功能进行归档,但是归档的工程路径较乱,不能将源文件和工程进行明显的分析。一种比较常用的方法就是使用tcl脚本: 现在已经有了生成的语法模板,需要在修改下自己需要的新工程名称,并去掉一些不需要的…

使用vivado封装IP

文章目录 Basics定制IP的参数Enablement Expression封装IP时使用了绝对路径封装IP时设置Address Map Addr相关tcl修正警告Bus Interface clk: ASSOCIATED_BUSIF bus parameter is missing.rst识别成低有效复位Bus Interface up_axi: FREQ_HZ bus parameter missing from AXI in…

vivado使用方法(初级)

文章目录 1 创建新工程1.1 工程创建1.2 新建Verilog文件1.3 仿真 参考 1 创建新工程 1.1 工程创建 1、首先打开Vavido软件,点击Creat Project或者在File——>Project——>New里面进行新工程的创建 2、然后在弹出的界面上点击Next进入下一个界面进行项目的命…

Vivado基础教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、创建项目二、添加设计文件代码 三、综合四、添加约束文件五、上板5.1、生产比特流文件5.2、硬件调试 前言 本文详细的讲述了vivado项目创建到上板的流程。…

vivado基本使用流程(详细版,一步步跟着来一定能成功)

创建工程 1、 2 3、项目名称不能有空格,目录不能含有中文路径 4、 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 16、 可以查看一下新建的文件 二、设置IP核 1、 2、 3、 4、 5、 6、 7、 可以查看到生成的ip核 8、 找到例化模板,日常…

虚拟基类

对于虚拟基类的个人理解,如有误恳请指正。 1.不用虚拟基类 class cBase_A{int x; public:cBase_A( ){x10;}int getx(){return x;}void setx(int a){xa;}};class cBase_B: public cBase_A{ };class cBase_C: public cBase_A{ };class cDerived_D: public cBase_B…