service层直接调用service层还是dao层
问题引入:
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层相关推荐
- java各层之间的调用关系dao_MVC的dao层、service层和controller层
1.dao层 dao层主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以再模块中调用 ...
- php有没有dao层,php框架开发四(DAO层)_PHP教程
网站开发不可避免地要对一些数据进行储存,但是存储这些数据各种语言的方式基本上都是:先打开连接,然后执行SQL语句,获取结结果,关闭连接. 那么PHP在操作数据库的时候有哪些方法呢? [php] $co ...
- DAO层,Service层,Controller层的作用
DAO层: DAO层主要是做数据持久层的工作,用来对应数据库实体,负责与数据库进行联络的一些任务都封装在此.主要就是封装一些数据库的增删改查操作,但仅仅是封装了操作,具体的实现并不在dao层里,所以我 ...
- Spring中DAO层、Service层、Controller层的定义
1.dao层 dao层主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,就可以在模块中调用此接 ...
- Spring整合Mybatis之DAO层、Service层开发
3. Spring整合Mybatis编程DAO层开发 1. 项目引入相关依赖spring mybatis mysql mybatis-spring druid2. 编写spring.xml整合:spr ...
- 三层架构编程、DAO层、Entity层、Service层、Controller层
什么是三层架构编程: 本质上所有的项目(应用程序)都是需要和用户交互,然后产生数据,对数据进行处理,最后将数据存储到硬盘这么个过程 在编程中,可以将这个过程分一下层次,最初只分两层,用户层和数据层,但 ...
- SSM框架中各层的含义和联系(Pojos层、Dao层、Service层、Action层......)
一.pojo层 即Plain Ordinary Java Object,也有人称其为model.domain.bean等,pojo层是对应的数据库表的实体类. 二.1.持久层:Dao层(Mapper) ...
- 【转】DAO层,Service层,Controller层、View层
DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口 ...
- dao层、service层和controller层
MVC三层架构 dao层 service层 controller层 view层 它们之间的关系: dao层 dao层主要做数据持久层的工作, 负责与数据库进行联络的一些任务都封装在此 dao层的设计 ...
最新文章
- LoadRunner之二“集合点”
- 2019华为性格测试题_小红书达人力荐!华为 Mate20 Pro红蓝新色最懂女人心
- Spark-Sql整合hive,在spark-sql命令和spark-shell命令下执行sql命令和整合调用hive
- 【Task】- JVM逃逸分析等待学习任务
- java私有属性和私有方法_Java 9中什么是私有的?
- 接口 EnvironmentAware
- LeetCode 1602. 找到二叉树中最近的右侧节点(BFS)
- dataframe 空值替换为0_dataframe取元素方法总结
- Delphi 7连接MySql 5 5 15
- 基础篇5-python基本数据类型讲解1.1
- 学python买什么书-关于 Python 的经典入门书籍有哪些?(python三大经典书)
- 字符编码-- Unicode(1991年)
- Cisco Packet Tracer安装及简单使用教程(初学者笔记)
- 计算机找不到家庭网络连接,电脑找不到家里的wifi无线网络怎么办?
- 苹果开发证书导出P12的问题
- 苹果中国全系降价:iphone最高降500元,用户可退差价
- EOS Error 3090003: provided keys, permissions, and delays do not satisfy declared authoriz
- 【 产品经理学习笔记 | 巨详细】1.1-1.4 初识产品经理
- Oracle 实用技巧之不知道密码情况下 dblink 的迁移
- Python发送验证码短信