java中dao层和service层的区别是什么?

星空秀


要知道dao层和service层的区别,那么我们得先从了解每个层开始,在来理解这两个层的区别就简单了。

Java后端分层

我们都知道题主问的问题,是web程序的分层思想会谈到的内容。在web应用程序中所谓的分层都是按照mvc的思想做分层操作的,根据mvc的分层思想我们可以把后端代码分为:dao---->service---->control---->view

这样分层的作用就是为了让代码各施其职,各尽其用。简单的理解就是代码和代码对于不同的地方有不同的作用,所以根据代码的作用把他们按照mvc的思想分为以上四个层。

各个层之间相互协调工作

各层作用

那么我们从上面的层分别来解释各个层的作用:

  • dao层:

dao层就是用来做连接数据库操作的代码层,我们编写的程序中数据是需要我们从数据库中查询出来然后在程序中做运算。那么做数据库操作的代码会被分到dao层中,一般情况下dao层中会引用到对应表格的实体类,因为做数据库操作是需要做查询,那么做查询数据的保存方式一般是一张表格就一个实体类,然后实体类基本上作用就是用来在各个层之间做数据传递。

  • service层:

service层的就是用来做业务处理的。我们数据库的表格之间是有关联关系的,那么我们的程序需要完成一个业务,也不是总是一张表解决问题的,这个时候完成这个业务功能是需要结合多个dao层中数据库操作完成,业务逻辑比较复杂的业务模块是需要做事务的管理的,否则对于数据库来说会产生垃圾数据,以及一些误操作导致的数据的不准确性,和不必要的操作造成的异常。从而违背了数据库完整性要求。

  • control层:

control层的作用就是用来管理请求和业务处理之间的交互。一般情况就是用户在页面上操作对应的操作需要向服务器方式对应的请求,Control层就会接收对应的请求,根据对应的请求在调用对应的业务处理,在根据不同的业务处理调用对应的数据访问,数据访问把结果得到给到业务逻辑层,业务逻辑层在给到Control层,Control层在把对应的结果反馈给用户。

  • view层:

view层的作用就是用来和用户做交互操作的。也就是说view层就是我们所说的html前端页面,展示数据给用户,根据数据做对应的操作。

dao层和service层的区别

根据上面讲解的内容可以看到dao层和service层的代码的作用是完全不同的。作用功能不同,dao层只是为了做数据库操作,service层主要是做整体的业务逻辑处理。在service层中是必须得调用dao层中的代码来做相应的业务处理,所以他们两个层是相互协助工作的。

这个图片可以看到他们两个的最直观区别

总结:dao层和service层最大的区别就是作用功能的不同,但是他们之间也是相互协作而存在的,谁都不能少谁。

以上是答主的看法,希望大家能给个赞,如果有其他看法的可以在下方评论区留言,我会在第一时间回复,或者点个关注我们一起探讨探讨


自学JAVA


java基础的三层架构

web层写servlet 与前端和service层交互

service层实现业务逻辑 调用dao层 返回web层

dao层只查数据库 然后返回到service层

不知道我说的对不 请教各位大佬们


苏苏不会撞南墙


Dao层又叫数据访问对象层, 封装数据库的底层操作细节如数据库的连接及对数据的CRUD等操作,它不但屏蔽了数据存储最终介质的不同,也屏蔽了具体实现技术的不同。一般在其上还会有Service层来封装业务操作进行进一步的解耦。不用DAO层也能实现Dao层时的优点如自己封装一个类似Dao层功能的数据库操作模板类,可参考Spring的DAO层思想。


美食旅游IT博士后


简单一点,dao层只是访问数据库,业务逻辑跟它没关系,它只会访问数据库读取数据,不知道这些数据是什么意思、做什么用的;service层,就是操作业务逻辑,它调取dao层的数据,对数据按照业务逻辑进行解释。

总结一下,就是dao层不能有业务逻辑,service层可以调取一个dao层或者多个dao来实现业务逻辑。如果dao层加了业务逻辑进去,可以不通过service层实现了业务逻辑,不仅拖累查询效率,还让dao层代码难以复用,导致代码臃肿。


二世阿博


service负责业务逻辑,dao负责数据访问。

以注册用户这个功能为例,service层要负责检查用户名是否保留字,是否已使用,然后把信息写入数据库,再生成关联信息比如权限等也写入数据库。

同时还要处理异常。这一串动作就是业务逻辑,service层要负责实现,但它不应该关心底层用的是mysql还是oracle,也不应该由它拼接SQL语句。

dao层的代码则只与数据库交互,比如service层要添加用户记录,它就执行insert语句,要检查用户是否已存在,它就执行select语句。

标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改某一层代码。

如果你会像spring这样的框架,你会了解面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。初期也许都是new对象去调用下一层。


智慧网络2333


dao一般是直接对数据库的增删改查,给service提供服务,service一般是做业务逻辑处理,需要操作数据库时调用dao的方法


aGentleman


dao层也叫数据访问层,基础操作,对于某个表的增删改查。service层理解为一个或多个dao进行再次封装成一个服务


分享到:


相關文章: