service层直接调用service层还是dao层_service层调用service层-程序员宅基地

技术标签: 面试  java  后端Java框架  Java设计模式,架构设计等思想  

问题引入:

java web项目开发中spring service层直接调用service层还是dao层,哪个更合理?

一、初步理解

service层作为一个业务逻辑处理层,我若直接调用dao层,那么该业务只取出我所需要的数据,我若调用service层,那么就相当于一个业务依赖于另一个业务,耦合度不就高了?所以,到底哪个更合理,想听听你们的理解

二、分析总结

总结1

按我的经验,service a不能调用b的dao层,只能调用b的service层实现业务。

因为b的service是对dao的CRUD封装,如果是单库的话service或许只是dao的代理,但如果有cache,跨库查询那显然调用dao b是不合理的,可以类比为视频系统调用用户系统,视频系统不关心用户系统的dao层实现机制,只要通过service层查询到用户信息即可。

另外你说的业务依赖确实有这样的困惑,但本身java类之间通讯就是有依赖关系的,或许如果service a业务依赖的service b业务太过于复杂时你可以再次抽象出service b的另外一个interface就ok了。

这个问题非常好,也是我一直想总结分享的,具体可以看下我分享的完整的java项目代码。

总结2

个人觉得肯定是service层了, 如果直接调用dao。违背了MVC模式概念, 而且代码才真正的耦合性增加。换个思想来看,如果你直接调用了dao层. 那么平常的一些业务逻辑处理怎么办? 写在dao里面吗, 万一哪天业务需求改变了. 岂不是连dao全部都要改版.增加了开发的工作量,而且代码重用性不高.  只是个人理解哈.

总结3

调用service层,要严格执行mvc的分层结构,如果不分层直接调用dao层的话,容易出错,后期维护困难.只要严格分层,不会容易出错.

总结4

这个要看业务的复杂程度了,如果比较复杂,变动大,我感觉还是调用service,如果业务变动不太大,那就调用dao实现就可以了吧 

三、最后总结

调用service层更合理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AlbenXie/article/details/120116679

智能推荐

长虹IHO-3300AD-非高安-S905L3芯片-当贝纯净桌面-强刷线刷包_iho3300ad刷机-程序员宅基地

文章浏览阅读2.5k次。2、拿下盒子插头,打开USB烧录工具,加载好固件,点击开始,刷机软件上点开始按钮双公头USB线一头插电脑后置USB口,,2、拿下盒子插头,打开USB烧录工具,加载好固件,点击开始,刷机软件上点开始按钮双公头USB线一头插电脑后置USB口,3、如刷机到1%出错,可尝试取消勾选刷机软件的擦除falsh和擦除bootloader两处,重新从第一步开始刷机。_iho3300ad刷机

数据的深拷贝浅拷贝的使用时机和实际遇到的问题和延展运算符拷贝数据的错误使用_深拷贝数据不正确-程序员宅基地

文章浏览阅读131次。数据的深拷贝浅拷贝的使用时机和实际遇到的问题和延展运算符拷贝数据的错误使用。_深拷贝数据不正确

【小家Spring】Spring MVC容器的web九大组件之---HandlerMapping源码详解(二)---RequestMappingHandlerMapping系列_webmvchandlermapping-程序员宅基地

文章浏览阅读4.4k次,点赞4次,收藏12次。前言上篇博客:【小家Spring】Spring MVC容器的web九大组件之—HandlerMapping源码详解(一)已经分析过了HandlerMapping的一些抽象实现原理,以及AbstractHandlerMapping的一个主要分支:AbstractUrlHandlerMapping体系的实现原理,可以知道它是基于类级别的Handler实现本文将介绍它的另外一个系列:Abstr..._webmvchandlermapping

spring 3.2正式版 源代码 + jar包_完整spring源码3.2项目包含jar-程序员宅基地

文章浏览阅读1k次。源代码svn地址:https://github.com/SpringSource/spring-framework.gitjar包地址:http://repo.springsource.org/libs-release-local/org/springframework/spring/3.2.2.RELEASE/spring-framework-3.2.2.RELEASE-dist_完整spring源码3.2项目包含jar

详解Pytorch中的网络构造_pytorch 网络结构-程序员宅基地

文章浏览阅读1k次。背景在PyTroch框架中,如果要自定义一个Net(网络,或者model,在本文中,model和Net拥有同样的意思),通常需要继承自nn.Module然后实现自己的layer。比如,在下面的示例中,gemfield(tiande亦有贡献)使用Pytorch实现了一个Net(可以看到其父类为nn.Module):import torchimport torch.nn as nnimport torch.nn.functional as Fclass CivilNet(nn.Module):_pytorch 网络结构

mysql 中 group by 与 order by 的顺序_group by order by顺序-程序员宅基地

文章浏览阅读1.7w次,点赞4次,收藏11次。mysql 中order by 与group by的顺序 是:selectfromwheregroup byorder by注意:group by 比order by先执行,order by不会对group by 内部进行排序,如果group by后只有一条记录,那么order by 将无效。要查出group by中最大的或最小的某一字段使用 max或min函数。例:select sum(click_num) as totalnum,max(update_time) as up._group by order by顺序

随便推点

解决虚拟机中安装的mac os系统无法识别ios设备的问题_mac找不到此设备的安装信息-程序员宅基地

文章浏览阅读7.2k次。转载自:https://blog.csdn.net/jiuluguoshidai/article/details/51583684之前没有在此黑苹果上编程,只是连接过U盘,U盘是可以识别的,但是连接我的ipad的时候却无法识别。搜索百度无果,只有翻墙搜万能的谷歌。辛亏英文还是混的过去的。经过搜索比较得出解决办法:1、邮件系统,点击最下方的设置。2、然后选到usb控制器,将usb..._mac找不到此设备的安装信息

java+sql2000 控制台学生住宿信息管理_用sql建住宿信息-程序员宅基地

文章浏览阅读107次。关注公众号,回复:java+sql2000 控制台学生住宿信息管理,获取源码,百度云哦。不会安装,找公众号管理员_用sql建住宿信息

ExchangeService(EWS)错误:The response received from the service didn't contain valid XML.-程序员宅基地

文章浏览阅读4.1k次。在用ExchangeService(EWS)连接Exchange邮件服务器时,报错: The response received from the service didn't contain valid XML.其InnerException为: The expected XML node type was XmlDeclaration, but the_the response received from the service didn't contain valid xml

浅谈无线测温系统技术在工业电缆接头的应用-程序员宅基地

文章浏览阅读81次。针对存在的问题,提出了解决办法,安装一套电缆中间头无线测温系统,既可以解决人员少不能保证检测频率问题,又能实时监测每个电缆中间头工作温度,并将检测结果上传至长钢站后台系统,当某个电缆中间头温度达到70度时,报警提醒变电站值班人员,并及时通知巡检工到现场检查处理,必要时停电更换中间头,避免了因中间头温度过高,电缆击穿,导致电缆着火停电等重大事故发生。(4)人员少,电力设施一直在增加,但巡检人员一直未增加,逐年减少,设备线路多,人员少存在矛盾,对电缆中间接头室的巡检频次减少,不能及时发现电缆运行中的温度变化。

纯前端调用本机原生Office实现Web在线编辑Word/Excel/PPT,支持私有化部署_前端接入office-程序员宅基地

文章浏览阅读629次,点赞10次,收藏4次。猿大师办公助手提供了一种新的解决方式,就是把本机原生Office嵌入到网页中,支持完整嵌入模式,也就是可以用到本机的Office的所有功能,不仅性能方面更加优秀,复杂图表及样式保存后用本机Office打开也会保持完全一致,并且支持私有化部署,支持主流浏览器包含Chrome等最新版。在日常协同办公过程中,一份文件可能需要多次重复修改才能确定,如果你发送给多个人修改后再汇总,这样既效率低又容易出错,这就用到网页版协同办公软件了,不仅方便文件流转还保证不会出错。_前端接入office

冒号课堂§6.2:平台语言-程序员宅基地

文章浏览阅读132次。冒号课堂 6.2平台语言——先搭台后唱戏大巧在所不为,大智在所不虑 ——《荀子·天论篇》关键词:平台语言, Java,C#,C++...