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