DAO层和Service层的究极理解--这波我在大气层

article/2025/9/23 18:26:46
  • 注重版权,转载请注明原作者和原文链接
    作者:码农BookSea
    原文链接:https://blog.csdn.net/bookssea/article/details/107488749

先看后赞,养成习惯。
点赞收藏,人生辉煌。

在这里插入图片描述


说实话,学了挺久的MVC架构了,到现在也一直没整明白Service层DAO层是干什么用的,哪怕我目前已经学到了Spring Boot,但回过头来看这些基础知识,依然是不明就里。
感觉Service层并没有做什么实际的工作,只是接受了Servlet,同时又调用了Dao。它本身并没有什么实际意义的代码,感觉并没有什么用处,那为什么还写?这不是增加代码量吗?
还有DAO层是做什么的?为什么用Service层来调用DAO层?

在这里插入图片描述

网上的相关文章我也看了挺多,但大都讲的不是很通俗易懂,看了之后依旧还是很迷糊。
问了身边的一些大佬同学,也去咨询了下老师,不断求知
总算整明白了,我把我的心得写下来跟大家做个分享。


先简单来讲下Dao层,和Service层的概念:

Service是业务层,Dao是数据访问层,这样的分层是基于MVC架构来说的。

Dao层:全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表、某个实体的增删改查

Service层:被称为服务,肯定是相比之下比较高层次的一层结构,相当于将几种操作封装起来。

具体起来,Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求;
而Service,则是专注业务逻辑,对于其中需要的数据库操作,都通过Dao去实现。


简单来说就是Dao层是底层,具体到某一张表的增删查改,可以理解为有多少张表就有多少个Dao层,而Service成可以理解为是Dao层的 “上司”,通过Service层来控制Dao层。

一个Service层控制一个或者多个Dao层。

举个栗子:Service层好比是老大,手下跟着一大帮小弟 (Dao层), 老大不用亲自出马,有事情吩咐小弟去干就行,老大只管下命令,小弟只管做事跑腿。
在这里插入图片描述

而为什么我们要通过Service层去调用Dao层,这样做的最大好处就是:

解耦

说的通俗点就是降低代码之间的耦合,尽量让代码之间不要有太大的联系。

好比主板上内存坏了,我换内存就行,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存就都可以插上这个接口使用。
在这里插入图片描述

这样当某部分代码出错或者需要修改时,其他代码就不需要修改或者变更,好处就在这里。

而 Dao 层,只负责接收最终的 sql 语句,具体到某一张表的增删查改。

再用上面的老大和小弟的例子,小弟 (Dao层) 脑子一般不太灵光,不具备什么决策能力。能当上老大脑瓜都比较好使,命令由老大去下达,累活脏活交给小弟去干 (增删查改),底下一大帮子小弟听老大指挥,老大叫谁干什么就干什么。最后完成老大布置的任务。

Service层也不是就非有不可,对于极小的项目而言,加了Service层,反而增加了代码量,而且Dao层中已经预见了可能出现的情况,并进行了相应的扩展。那么,此时就不需要了。

虽然小弟脑子可能不太好使,但是有些事,你没脑子都能完成啊,这时就不需要老大出马了,不然一点屁大点的事都要麻烦老大,老大也太掉价了吧。

但是存在即合理,存在Service层肯定有其原因,通过Service层去调用Dao层,不仅可以解耦合,而且可以增加代码的拓展性。


以上仅是个人的一些当前阶段的理解,如果我有哪里写的不对,欢迎评论区留言进行指正。

白嫖不好,创作不易。各位的点赞就是我创作的最大动力,我们下篇文章见!
老铁,如果有收获,请点个免费的赞鼓励一下博主

在这里插入图片描述


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

相关文章

将网页保存为图片--修改

这里以Chrome浏览器为例 (谷歌浏览器) 打开需要保存为图片的网页 然后按F12,接着按CtrlShiftP 在红框内输入full 点击下面的“Capture full size screenshot”就可以保存整个网页为图片了 ** 发现不能全部保存网页** 解决方法如下 1.打…

网页保存为PDF遇到的问题(网页打印)

在浏览CSDN上某些干货满满的文章时,我们经常会想将其下载至本地然后反复学习,这时便可以通过浏览器自带的打印功能进行网页保存,但是往往在保存时得不到想要的效果。 问题描述: 本来想以PDF格式将自己的博文保存至本地&#xff…

使用谷歌Chrome浏览器将网页保存为html格式

现版本谷歌Chrome浏览器再也没有"Sava Page as MHTML"一说,将网页保存为MHT、MHTML、HTML格式有俩种途径: 1、下载Save As MHT插件,压缩完成之后在文件中找到后缀名.crx用谷歌浏览打开,然后逐个添加MHT、MHTML 2、鼠标…

牛逼!40行Python代码一键把html网页保存为pdf,太方便了!

公众号 “菜鸟学Python”, 设为 “星标” 第451篇原创,和30w一起学Python! 最近临近开学了,大家都在忙着准备各种学习的资料,准备在新的学期好好学习,充实自己。小编身边的同学也是如此,最近,小…

怎么把网页保存成pdf格式-最简单操作

网页怎么保存成pdf格式,会有很多人下载插件,其实不需要那么复杂。只需要简单的两步就可以了。 第一步:打开网页后,鼠标点击右键按打印 第二步:在目标打印机框中更改成另存为pdf模式,点击保存就可以了&…

网页保存为pdf神器(可自定义编辑)—Print Edit WE

1 如何保存一个网页为pdf文件 对于一个网页,如果想保存为一个pdf或者打印,可以直接使用CTRLP即可。但是这样对应的问题就是,网页时全部内容都会被保存进来,包括一些无关的广告或者评论图片等等。例如: 这样就不可避免…

如何查看网页保存的密码

查看网页保存密码 第一种方式,是在浏览器设置查看登陆网页保存的密码,但是不同浏览器操作不同,再次介绍一种通用使用所有网站小白也能操作的方式:修改代码 第一种: 第二种: 再次以简书为例,所有保存密码的都可以适用 首先,要点击填写的账号,会自动弹出提示你点击填充账号密…

Chrome 谷歌浏览器将整个网页保存为图片

两步解决Chrome谷歌浏览器如何将整个网页保存为图片,再也不用慢慢截取一张张图片拼接啦~ 先在需要保存为图片的页面按 F12 打开开发者工具再按 ctrlshiftp 输入full 搜索选择Capture full size screenshot

如何将网页保存成mhtml格式

如何将网页保存成mhtml格式 网页归档(英语:MIME HTML或MIME Encapsulation of Aggregate HTML Documents,又称单一档案网页或网页封 存档案)为以多用途互联网邮件扩展格式,将一个多附件网页(如包含大量图片…

[Chrome] 超级好用的网页保存插件

需求背景: 1、有时候断网,不能浏览自己收藏的文章; 2、有时候网站服务器维护,自己写的文章竟然也不能浏览; 3、有时候明明收藏了别人的文章,还重点标记了,过几天,结果找不到了&#…

edge保存网页html,微软Edge浏览器不支持网页保存功能怎么办?

微软 Edge 浏览器自发布以来一直在不断完善与改进中,在添加了扩展插件功能后,Edge 浏览器的功能性得到了显著改进,但对于某些用户来说,Edge 仍旧欠缺一项非常重要的特性——将网页保存至本地设备的功能。 “保存网页到本地”是一项…

保存html为pdf,将网页保存为PDF的几种方法

方法一 虚拟打印机打印(1) 优点:字体正常、公式正常、文字可选 不足:链接失效优点:字体正常、公式正常、文字可选 工具:IE 浏览器 Foxit Reader PDF Printer 步骤: 1.在网页空白处单击右键,选择“打印”。…

浏览器网页保存长图

在需要保存的网页页面,按F12,弹出开发者工具,再按ctrlshiftp,在弹出框输入“full”,选择弹出的“capture full size screenshot”,就可以保存需要的网页长图了

如何将网页保存为pdf

有的时候我们需要备份某一个网页,但是直接收藏有的时候源链接会被删除,如果保存成网页,文件又很多,保存成PDF格式是一个不错的选择,下面就跟大家分享一个简单的方法。 首先,点击浏览器右上角的…三个点 我…

python将网页保存为pdf,python-网页保存为pdf

今天用到是python的一个第三方库: pdfkit pdfkit 是一个十分强大的第三方库,只需要把网页的url(需要登录或其他特殊方式才能访问的除外)传入,仅靠它自己就能将网页保存为pdf。当然,pdfkit 库也支持文件和源码的传入,同样能将获取到的保存为pdf。 使用工具:pdfkit 环境准备…

如何找到jsp生成的java文件

按照上图所示Using CATALINA_BASE的路径寻找即可。

JAVA文件上传多方式

1.文件上传接收文件接口 通过post接口,上传文件 PostMapping(value "/uploadFile")ApiOperation(value "文件上传", notes "文件上传")public Result uploadFile(RequestParam (name "file") MultipartFile file) thr…

JAVA操作文件

计算机中的文件 什么是文件? 在我们日常生活中,我们认为文件就是记录着一些信息的本子。这些本子上可以记录任何我们想记录的信息。并且我们可以将多个本子夹在一起,形成一个大的文件夹。 那么计算机也是如此,在计算机中也可以通过…

java的File

一、File (一)新建File对象 File对象表示一个路径,可以是文件路径,也可以是文件夹路径;这个路径可以是存在的,也可以是不存在的。 File类常见的构造方法: 例如: 注意:因…