问题引入:

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层更合理

service层直接调用service层还是dao层相关推荐

  1. java各层之间的调用关系dao_MVC的dao层、service层和controller层

    1.dao层 dao层主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以再模块中调用 ...

  2. php有没有dao层,php框架开发四(DAO层)_PHP教程

    网站开发不可避免地要对一些数据进行储存,但是存储这些数据各种语言的方式基本上都是:先打开连接,然后执行SQL语句,获取结结果,关闭连接. 那么PHP在操作数据库的时候有哪些方法呢? [php] $co ...

  3. DAO层,Service层,Controller层的作用

    DAO层: DAO层主要是做数据持久层的工作,用来对应数据库实体,负责与数据库进行联络的一些任务都封装在此.主要就是封装一些数据库的增删改查操作,但仅仅是封装了操作,具体的实现并不在dao层里,所以我 ...

  4. Spring中DAO层、Service层、Controller层的定义

    1.dao层 dao层主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,就可以在模块中调用此接 ...

  5. Spring整合Mybatis之DAO层、Service层开发

    3. Spring整合Mybatis编程DAO层开发 1. 项目引入相关依赖spring mybatis mysql mybatis-spring druid2. 编写spring.xml整合:spr ...

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

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

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

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

  8. 【转】DAO层,Service层,Controller层、View层

    DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口 ...

  9. dao层、service层和controller层

    MVC三层架构 dao层 service层 controller层 view层 它们之间的关系: dao层 dao层主要做数据持久层的工作, 负责与数据库进行联络的一些任务都封装在此 dao层的设计 ...

最新文章

  1. R语言数据横向合并cbind函数实战
  2. MacBook 无法启动(白苹果+无限菊花)解决方案及心得
  3. how to make academic sentences
  4. AtCoder AGC029E Wandering TKHS
  5. 前端网址导航-最酷前端圈子在这里
  6. CMake 使用笔记
  7. 问题之mybatis-plus中的TableField、Tableld的区别
  8. vnpy软件架构分析
  9. pandas 学习 —— pivot table
  10. bouncing-balls-evil-circle
  11. iOS6和iOS7适应代码(6) —— NSLocalizedString
  12. (二)GitHub使用随记
  13. 计算机网络性能(2)
  14. 光纤尾纤的型号和作用有哪些?
  15. 据我所知目前就只飞秋表情库
  16. 松下TDA-200开启呼叫转移功能
  17. html a标签鼠标聚焦,html怎么实现鼠标悬停提示A标签内容
  18. 经典进程同步与互斥问题
  19. 【CQBZ模拟赛】星际旅行
  20. Docker 在 openSUSE 下的安装、使用

热门文章

  1. 【数字信号处理】卷积和乘法系列3之傅里叶变换对
  2. 基于c#的教育培训网
  3. ThinkPHP(tp5)一键生成静态方法
  4. 说说下一代的报表设计器——Jaspersoft Studio
  5. GPD P2MAX用gibMacOS图文安装黑苹果
  6. Python如何借助Numpy将列表中的每个数字都保留两位有效数字
  7. Oracle数据库学习笔记(七)--事务及数据的增删改查
  8. VUE 常规截取和特殊字符之前之后截取
  9. 平安金融壹帐通面试总结
  10. 2023年美国数学建模比赛C题部分工作展示