史上最全总结!utilpojodomainentitymodeldaodtoviewmapperservicecontroller的作用和区别分析

来老铁干了这碗代码 来老铁干了这碗代码     2023-01-02     355

关键词:


前言

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

现阶段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层方法进行操作,操作完成后将返回结果传递给页面。


喜欢就点个赞吧!

史上最全高级java教程总结版(强烈建议收藏)

本篇文章主要用于分享java相关的视频,课程等,涉及面比较广,建议先收藏再慢慢观看,信息量比较大。适合新手,老手各阶段Java程序员。订阅本专栏《高级java教程系列》的福利!目录java知识体系列表面试题库 java各知识... 查看详情

史上最全高级java教程总结版(强烈建议收藏)

本篇文章主要用于分享java相关的视频,课程等,涉及面比较广,建议先收藏再慢慢观看,信息量比较大。适合新手,老手各阶段Java程序员。订阅本专栏《高级java教程系列》的福利!目录java知识体系列表面试题库 java各知识... 查看详情

史上最全总结!utilpojodomainentitymodeldaodtoviewmapperservicecontroller的作用和区别分析

文章目录前言工具类层Util数据层POJO对象domainentitymodelviewDTO总结数据访问层DAOmapper业务层service控制层Controller前言做开发项目时,总会遇到这些包,理清他们的层次,非常有助于我们对于项目的理解和建立。现阶段CSDN... 查看详情

史上最最最最最最最最全python爬虫总结(代码片段)

(1)普通的内容爬取(2)保存爬取的图片/视频和文件和网页(3)普通模拟登录(4)处理验证码登录(5)爬取js网站(6)全网爬虫(7)某个网站的站内所有目录爬虫(8)多线程 (9)爬虫框架Scrapy  一,普通的内容... 查看详情

两万字长文,史上最全c++年度总结!

【编者按】C++四十年,历久弥新长盛不衰。几日前CSDN组织了一次C++直播对话,在非常短的时间内就吸引了两万多开发者观看,足以说明C++在开发者中的影响力。本文的四位作者联合撰文,写下了... 查看详情

两万字长文,史上最全c++年度总结!

【编者按】C++四十年,历久弥新长盛不衰。几日前CSDN组织了一次C++直播对话,在非常短的时间内就吸引了两万多开发者观看,足以说明C++在开发者中的影响力。本文的四位作者联合撰文,写下了... 查看详情

史上最全svn使用总结,建议先收藏后观看

最近在公司又开始玩SVN啦,这里给大家总结一下,基本上在公司不是用git就是用SVN进行代码管理,作为程序员,这些工具的使用还是需要熟悉了解一下的,本期孙叫兽给大家分享一下SVN相关的知识点,做到... 查看详情

史上最全svn使用总结,建议先收藏后观看

最近在公司又开始玩SVN啦,这里给大家总结一下,基本上在公司不是用git就是用SVN进行代码管理,作为程序员,这些工具的使用还是需要熟悉了解一下的,本期孙叫兽给大家分享一下SVN相关的知识点,做到... 查看详情

史上最全关于苹果开发者账号及上架appstore总结

很多人如果开发这种移动应用APP,上架到到APPStore难免会遇到一系列的问题,这里孙叫兽进行总结一下,如果本文对你有帮助,记得转发点赞收藏。一:开发者账号的介绍1个人开发者账号  申请费用:99美元/年   ... 查看详情

史上最全wireshark使用教程,8万字整理总结,建议先收藏再耐心研读

 目录第 1 章 介绍...11.1. 什么是Wireshark.11.1.1. 主要应用...11.1.2. 特性...11.1.3. 捕捉多种网络接口...21.1.4. 支持多种其它程序捕捉的文件...21.1.5. 支持多格式输出...21.1.6. 对多种协议解码提供支持...21.1.7. 开源软件...21.1.8. Wire... 查看详情

史上最全wireshark使用教程,8万字整理总结,建议先收藏再耐心研读

 目录第 1 章 介绍...11.1. 什么是Wireshark.11.1.1. 主要应用...11.1.2. 特性...11.1.3. 捕捉多种网络接口...21.1.4. 支持多种其它程序捕捉的文件...21.1.5. 支持多格式输出...21.1.6. 对多种协议解码提供支持...21.1.7. 开源软件...21.1.8. Wire... 查看详情

史上最全关于苹果开发者账号及上架appstore总结

很多人如果开发这种移动应用APP,上架到到APPStore难免会遇到一系列的问题,这里孙叫兽进行总结一下,如果本文对你有帮助,记得转发点赞收藏。一:开发者账号的介绍1个人开发者账号  申请费用:99美元/年   ... 查看详情

史上最全的测试用例设计方法总结(代码片段)

测试用例的设计方法(全)等价类划分方法:一.方法简介1.定义是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒... 查看详情

史上最全的ios各种设备信息获取总结

为了统计用户信息、下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息的获取方式:GitHub:https://github.com/PengfeiWang666/iOS-getClientInfo一行代码就搞定的统一来!//这个方法后面会列出... 查看详情

史上最全的numpy函数大全,导师都说我总结的好!

前面我为大家讲述了Numpy中,如何区分axis=0还是axis=1。今天就为大家介绍Numpy最后一课,Numpy函数大全,希望大家用到什么函数的时候,就可以自行下去学习,这里好好为大家总结一下。由于函数众多࿰... 查看详情

史上最全软件测试工程师常见的面试题总结多测师

1)负载测试和压力测试区别?2)1000个用户的并发测试怎么测?3)一个杯子从哪方面测?4)jenkins怎么用的?5)第一个项目哪些方面做了自动化?6)哪些方面可以做性能测试?7)搭建性能环境从哪几个方面考虑?8)手机app测试和web测试的... 查看详情

史上最全软件测试工程师常见的面试题总结多测师

1.自动化的测试原理?2.100个用户同事发帖  XXX  你希望的团队是怎么样子的?XXX3.连接俩个字符串使用什么命令??4.SCP和SFTP的区别?5.数据库的数据类型?6.你们公司是如何评价一个软件的质量的?7.你工作几年了... 查看详情

号称史上最全java多线程与并发面试题总结—基础篇(代码片段)

前言 多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括... 查看详情