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

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

先看后赞,养成习惯。

点赞收藏,人生辉煌。


说实话,学了挺久的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层,不仅可以解耦合,而且可以增加代码的拓展性。

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

白嫖不好,创作不易。各位的点赞就是我创作的最大动力,我们下篇文章见!

老铁,如果有收获,请点个免费的赞鼓励一下博主


目录
相关文章
|
存储 前端开发 Java
一篇文章带你搞懂Controller、Service等各层的功能与作用
本文将深入探讨这些controller.service等层的作用与功能,帮助读者更好地理解它们在软件开发中的重要性和运作原理。
5264 0
Pyside6-第十篇-纯文本QPlainTextEdit
Pyside6-第十篇-纯文本QPlainTextEdit
1114 0
Pyside6-第十篇-纯文本QPlainTextEdit
|
人工智能 运维 监控
现代云平台技术及其应用
在当今数字化时代,云平台技术正日益成为企业转型和创新的关键。本文将探讨现代云平台的定义、架构特点及其在不同行业中的应用案例,旨在帮助读者深入了解并有效应用这一技术。 【7月更文挑战第9天】
859 2
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
数字化转型需要的技术:生成式AI时代的全栈能力图谱
本文探讨生成式AI推动下的数字化转型技术需求转变,从技术本质、实施路径、伦理规制三方面解构核心要素。技术本质从工具理性进化到能力体系,需建立模型思维、多模态交互和自主进化能力。实施路径分为认知重构、实验验证与迭代优化三个阶段。同时,文章介绍生成式人工智能认证(GAI认证)的战略价值,强调其在能力基准建立、技术合作及创新生态接入中的作用。最后,文章分析组织能力进化与未来技术前沿,如认知智能、具身智能和群体智能的演进方向,为企业提供全面的技术赋能与战略转型指导。
|
JSON 前端开发 JavaScript
【简单粗暴】如何使用 React 优化 AG 网格性能
【简单粗暴】如何使用 React 优化 AG 网格性能
431 3
|
SQL Java 数据库连接
Dao层和Mapper层
Dao层和Mapper层
2357 0
|
JavaScript Java API
深入浅出后端开发:从基础到进阶
本文将带你走进后端开发的神秘世界,从最基础的概念讲起,逐步深入到高级技术的应用。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和实用的技巧,帮助你在后端开发的道路上更进一步。我们将涵盖后端开发的基本概念、常用技术栈、数据库管理、API设计以及性能优化等关键领域,让你全面了解后端开发的方方面面。
|
安全 开发者 UED
APP上架到应用商店需要哪些流程?
APP上架是一个涉及多个步骤和准备工作的过程,主要包括准备上架资料和遵循上架流程两个方面。
1766 1
|
存储 Kubernetes 算法框架/工具
Kubevirt
Kubevirt
900 12
|
算法 程序员 分布式数据库
分布式一致性必备:一文读懂Raft算法
Raft算法是一种用于分布式系统中复制日志一致性管理的算法。它通过选举领导者来协调日志复制,确保所有节点数据一致。算法包括心跳机制、选举过程、日志复制和一致性保证。当领导者失效时,节点会重新选举,保证高可用性。Raft易于理解和实现,提供强一致性,常用于分布式数据库和协调服务。作者小米分享了相关知识,鼓励对分布式系统感兴趣的读者进一步探索。
3374 1

热门文章

最新文章