java中dao层和service层的区别,为啥要用service

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中dao层和service层的区别,为啥要用service相关的知识,希望对你有一定的参考价值。

首先解释面上意思,service是业务层,dao是数据访问层。
呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用,其他有意义的事没做,也不明白有这个有什么用,参加工作久了以后就会知道,业务才是工作中的重中之重。
我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改某一层代码,不会影响我其他层代码,如果你会像spring这样的框架,你会了解面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。初期也许都是new对象去调用下一层,比如你在业务层new一个DAO类的对象,调用DAO类方法访问数据库,这样写是不对的,因为在业务层中是不应该含有具体对象,最多只能有引用,如果有具体对象存在,就耦合了。当那个对象不存在,我还要修改业务的代码,这不符合逻辑。好比主板上内存坏了,我换内存,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。这就是MVC的意义。
接下来说你感觉service的意义,其实因为你现在做东西分层次不是那么严格,在一个你们做东西业务本身也少,举个最简单的例子,你做一个分页的功能,数据1000条,你20条在一个页,你可以把这个功能写成工具类封装起来,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。
再有不明白的追问,这是经验问题,呵呵,其实以后你就会懂。只是刚开始写的代码都是有个请求,我就去数据库取,业务几乎没有。
参考技术A dao全称Data Access Object,数据访问对象,是一种设计模式。
程序里是专门负责与数据库进行交互,进行增删改查的部分。
service层则是处理业务需求的部分。
之所以不把这两部分写在一起是为了解耦和
举个例子,有很多不同的功能可能会用到相同的访问数据库的方法
后台接收到前台传来的参数,分给不同的service层方法进行实现
service层方法再根据业务需求调用dao层的方法访问数据库获取数据
分成service和dao两层可以使得一些方法不用重复写,提高代码复用性本回答被提问者采纳

Spring Boot中DAO层和Service层等理解

Spring Boot中DAO等层的理解

目前在公司实习python算法研究,但是个人对Spring Boot有较大兴趣。在刚开始学习过程中对其中的一些概念不是很清晰,故写个博客记录一下。下图是项目开发和业务逻辑设计的一般框架和流程图。

1 DAO层

DAO:Data Access Object(数据访问层),负责数据持久化工作。DAO层负责与数据库进行交互,封装对数据库的访问,涉及数据的增删改查处理(不涉及业务逻辑)。

2 Service层

Service:业务层,负责业务模块的逻辑应用设计。在项目的开发过程中一般先设计所需的业务接口类,之后再通过类来实现该接口(Java中接口可以多继承,而类不能),然后在Config文件中进行配置其实现的关联。之后就可以在Service层调用接口进行业务逻辑应用的处理。封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。

3 Controller层

Controller:控制层,负责控制业务逻辑(例如登陆控制等具体的业务模块逻辑控制)。通常扮演负责控制处理Web前端发送的数据。Controller层主要调用Service层里面的接口控制具体的业务流程,控制的配置也需要在配置文件中进行。

[—注意—]
Conroller层和Service层的区别是:Controlle层负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计;

4 Entity层

Entity:实体层,数据库在项目中的类。放置一个个实体,及其相应的set、get方法。
Entity层中的类大多数是数据方面的,例如数据库中有负责登陆的User表(ID、UserName,Password),在Entity层就需要用private关键字定义与数据库中一样的字段(ID、UserName,Password)以及这些字段的get、set方法(方法可以Override)。

5 View层

View:通常指展示层,View层与控制层结合比较紧密,需要二者结合起来协同开发。View层主要负责前端页面的显示。

6 Utils层

Util是utiliy的缩写,是一个多功能、基于工具的包。如字符串处理、日期处理等,(建立数据库之间的连接),是通用的、与业务无关的,可以独立出来,可供其他项目使用。

总结

开发具体项目时,Controller层调用Service层的方法,Service层调用Dao层中的方法,其中调用的参数是使用Entity层进行传递的。

参考博客
1.https://blog.csdn.net/Restarting2019/article/details/122296373
2.https://www.cnblogs.com/yourjohn/p/15593686.html

以上是关于java中dao层和service层的区别,为啥要用service的主要内容,如果未能解决你的问题,请参考以下文章

java中dao层和service层的区别是啥

java中dao层和service层的区别是啥?

关于service层和DAO层的几点疑惑

java中Action层Service层和Dao层的功能区分

java中Action层Service层和Dao层的功能区分

Service层和Controller层的开发