2016 - 2024

感恩一路有你

service层怎么调用dao层 Service层和Dao层真的有必要每个类都加上接口吗?

浏览量:1940 时间:2021-03-17 12:48:42 作者:admin

Service层和Dao层真的有必要每个类都加上接口吗?

简单来说就是看情況。

主要看你项目:

  • 变动情况
  • 以及架构
  • 人员
  • 项目情况

比如,项目原来使用的hibernate,后续可能要切换为mybatis,那么dao就需要使用接口。这就不会影响上层代码的修改。

再比如,项目是个单体应用,任何代码的修改都需要重新编译整个项目,那可以不用接口。而如果项目是分模块编译部署的,那就可以使用接口解耦,假设dao有修改,只需要重新编译部署dao模块即可,不影响上层模块。

再来,如果项目组新手较多,可能简单的代码结构更适合。复杂项目结构的学习成本要高。

假如,项目进度很急,可以使用简单粗暴的方式先撸~

可以用经济学上的成本来解释原因。

经济学上的成本定义是:你做一件事,所放弃的其它事情中,价值最大的那件事的价值就是你做这件事的成本。

你使用接口的成本就是你不使用接口所花费的成本(包括后续的维护成本)。

如果项目变动多、模块部署、项目不急,那使用接口的成本就低于不使用接口的成本,虽然早期可能不用接口看起来更简单;反之,则不用接口的成本低,甚至框架都可以不使用~

毕竟工具是为了提高效率的,何必和自己过不去呢!

service调用是使用service还是调用dao层?

  都可以,根据比较严谨的编码规范,应该是自己的Service,调用自己的Dao

  例如:用户管理,UserService调用UserDao , 角色管理:RoleService,调用RoleDao,

  如果在用户管理的过程中,设置权限,那么应该是UserService调用RoleService方法进行角色的设置,然后调用UserDao进行用户的设置。

java调用其他模块,是放在control层通过service接口调用好,还是放在service层通过dao的接口调用好?

个人建议调用其他模块的接口,建议通过service层调用。如果A模块的service调用B模块的dao,B模块的dao和A模块耦合。假设随着业务的发展,需要将A、B模块各自单独发布成一个服务,那么A、B模块都要维护B模块的dao,并且A、B模块的开发人员都要熟悉B模块的dao,B模块的表增减字段后,需要同时通知A、B模块的开发人员,显然不便于维护。而且由于A、B模块都引入了B的dao模块,意味着A模块可以直接访问B模块dao的所有功能,而dao模块通常是一些基础操作。反之,service层一般是有具体业务含义的,通过service对外暴露具有特定含义的业务接口,可以避免将底层的操作全部暴露给外部模块。再假设随着业务的进一步发展,A、B模块需要进行分库,A、B模块分别使用各自的数据库,那么A再引入B的dao则必须访问B的数据库,意味着A要访问A、B两个模块的数据库,如果还有C、D模块呢,则A要访问A、B、C、D多各模块的数据库,显然不利于开发和维护,也不利于被引用模块的数据安全。

service层怎么调用dao层?

一般的做法是service的代码这注入dao@Autowiredprivate AuditDao auditDaopublic AuditDao getAuditDao() {return this.auditDao}可以通过auditDao.调用方法

java业务逻辑,写在哪里比较好?

现在很多公司开发人员应该采用都是mvc架构。

Mvc就是所谓的model模型,view视图,controller控制器。

每个层都有明确分工。

简单的项目抛开nignx,网关,一般都是前端发一个请求到后端,首先到达contoller然后是service层再然后是dao层。

这里的service层就是所谓的业务层,专门负责业务处理操作,而dao层负责和数据库打交道,从db拿数据返给service,sevice处理完返给controller层,controller通过视图解析器,解析完通过浏览器渲染页面。

说到这里基本上,我想答案已经很明显了。那就是Java业务逻辑写在service层。

而sevice层其实又涉及到接口和接口实现。

就是我们一般写代码都会定义一个接口供controller去调用。

其实service接口的实现类最终才应该是写业务逻辑的地方。

当然很多公司可能不止一个sevice层,比如还有一个manager层继续对数据做特殊业务处理,这里只是简单的说下大致情况。

每个公司每个项目根据自身业务,架构可能不太一样。但本质是一样的。

总结一下就是业务逻辑肯定需要单独作为一层去处理,这样既方便拓展,也方便维护。切记不要把所有的业务逻辑都写在controller里面。

每个层都有自己的分工,都揉在一块不仅仅代码冗长看起来还很乱,不清晰。

好了,希望我的回答能帮到你!

感兴趣可以关注,共同学习交流!


service层怎么调用dao层 一个service对应一个dao 两个service调用事务

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。