• 注重版权,转载请注明原作者和原文链接
    作者:码农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层,不仅可以解耦合,而且可以增加代码的拓展性。


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

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

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

  1. java dao层 service层_Java中DAO层、Service层和Controller层的区别

    DAO层: DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封 ...

  2. Java中dao层、service层、controller层、entity层和view层的概述

    目录 DAO层:(持久层)主要与数据库进行交互 Service层:(业务层 )控制业务 Controler层:(控制层 )控制业务逻辑 Entity层: (实体层 )数据库在项目中的类 View层: ...

  3. DAO层、ENTITY层、SERVICE层、CONTROLLER层

    dao层.entity层.service层.controller层 2018年08月09日 11:02:31 一江春华终散去 阅读数:3074 版权声明:本文为博主原创文章,未经博主允许不得转载. h ...

  4. Dao层和Service层的区别

    举个栗子: 传统访问数据库的方法非常面向过程,分为以下几步 – 实例化connection – 实例化statement – 通过statement的参数sql语句访问数据库,返回数据进行处理 imp ...

  5. SpringBoot框架中的DAO(mapper)层、Entity层、Service层、Controller层

    Entity层:实体层 数据库在项目中的类 Entity层是实体层,也就是所谓的model,也称为pojo层,是数据库在项目中的类,该文件包含实体类的属性和对应属性的set.get方法: DAO层: ...

  6. OA系统二十四:请假审批五:【点击“审批”后的审批弹出框】的后台逻辑;(审批结果提交的Dao层和Service层逻辑)

    本篇博客的主要内容是:[请假审批内嵌页面],[审批弹出框]的点击"确认提交"后,后台的逻辑:主要是Dao层和Service层这些后台逻辑:  说明: (1)目前来看,为了实现某个功 ...

  7. pojo层、dao层、service层、controller层的作用

    pojo层(model) 实体层 数据库在项目中的类 model是模型的意思,与entity.domain.pojo类似,是存放实体的类. 类中定义了多个类属性,并与数据库表的字段保持一致,一张表对应 ...

  8. 三层架构编程、DAO层、Entity层、Service层、Controller层

    什么是三层架构编程: 本质上所有的项目(应用程序)都是需要和用户交互,然后产生数据,对数据进行处理,最后将数据存储到硬盘这么个过程 在编程中,可以将这个过程分一下层次,最初只分两层,用户层和数据层,但 ...

  9. SSM框架中各层的含义和联系(Pojos层、Dao层、Service层、Action层......)

    一.pojo层 即Plain Ordinary Java Object,也有人称其为model.domain.bean等,pojo层是对应的数据库表的实体类. 二.1.持久层:Dao层(Mapper) ...

  10. java中DAO层、Service层、Controller层的区别

    DAO层: DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封 ...

最新文章

  1. ubuntu ibus谷歌输入法安装
  2. 数据库为什么使用B+树而不是B树
  3. 合并分支时有的文件删除了_GitGithub入门教程笔记(4)之分支管理一
  4. spring boot / cloud (七) 使用@Retryable来进行重处理
  5. Java 继承学习笔记
  6. python字节码执行函数_做一个字节码追踪器,从内部理解 Python 的执行过程
  7. python3中报错的解决方法(长期更新)
  8. Spring Cloud Config分布式配置中心高可用及配置刷新(学习总结)
  9. delphi xe 10.4 开发 APP
  10. STM32—驱动GY85-IMU模块
  11. 智慧教育教学案例分析
  12. matlab手眼标定
  13. ccy测试影响因子版270ms
  14. java多线程(超详细)
  15. sina股票接口更新:Kinsoku jikou desu
  16. EPICS -- synApps -- Autosave
  17. 2015年小米能否实现1亿部手机的销售目标?
  18. android 复制asset文件下文件到手机指定路径,手机根目录
  19. 计算机磁盘在线分区,电脑硬盘分区几个最好?你还把电脑硬盘分成C、D、E、F盘吗?...
  20. dvb-c usb android,安卓智能DVB-C高清数字机顶盒

热门文章

  1. 戴尔服务器u盘装系统看不见磁盘,戴尔电脑u盘装系统找不到硬盘怎么解决
  2. 哈工大数据库系统(上):嵌入式SQL语言之基本技巧(九)课后测验与作业
  3. 如何评价单片机大神郭天祥?
  4. 怎么找网页源文件位置_win7系统查看网页源文件的三种方法
  5. 基于Cohesie单元的二维水力压裂
  6. 如何打开windows的服务管理
  7. 姑娘留步,容我劫个色
  8. gmail邮箱注册成功流程
  9. 图像各向异性平滑滤波
  10. session+cookie简单讲解以及持久化登录实现