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


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

  • 536
    点赞
  • 661
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 50
    评论
DAOService是软件开发中常见的两个次。其中,DAO是数据访问Service是业务逻辑。下面详细解释两者的区别和作用。 DAO(数据访问DAO全称为Data Access Object,是数据访问对象。它是负责数据访问和持久存储的一,主要用于和数据库进行交互。在DAO中,开发人员通常会定义一些接口,这些接口定义了与数据库相关的操作方法,比如查询、增、删、改等。接着,开发人员会根据需要实现这些接口,以便具体的业务逻辑可以调用这些方法来操作数据库。 DAO的作用是将数据访问操作和业务逻辑分离开来,使得业务逻辑无需关心具体的数据库操作。这样,当数据库发生变化时,业务逻辑不需要做任何改动,只需要修改DAO的实现即可。 Service(业务逻辑Service是业务逻辑,它是连接DAO和Controller的中间。在Service中,开发人员会定义一些接口,这些接口定义了业务逻辑相关的操作方法,比如用户注册、登录、查询等。接着,开发人员会根据需要实现这些接口,以便具体的Controller可以调用这些方法来进行业务逻辑操作。 Service的主要作用是处理业务逻辑,将DAO提供的数据操作方法组合成具体的业务逻辑。同时,在Service中也可以进行一些数据校验、数据转换等操作。Service可以看做是一个业务逻辑的集合,将多个DAO操作组合成一个完整的业务流程。因此,Service的设计需要考虑业务逻辑的复杂性和可重用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 50
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农BookSea

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值