SpringMVC
ssm:mybatis+Spring+SpringMVC
javaSE javaweb 框架
理解的DAO层和Service层
先简单来讲下Dao层,和Service层的概念:
Service是业务层,Dao是数据访问层,这样的分层是基于MVC架构来说的。
Dao层:全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表、某个实体的增删改查
Service层:被称为服务,肯定是相比之下比较高层次的一层结构,相当于将几种操作封装起来。
具体起来,Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求;
而Service,则是专注业务逻辑,对于其中需要的数据库操作,都通过Dao去实现。
简单来说就是Dao层是底层,具体到某一张表的增删查改,可以理解为有多少张表就有多少个Dao层,而Service成可以理解为是Dao层的 “上司”,通过Service层来控制Dao层。
一个Service层控制一个或者多个Dao层。
举个栗子:Service层好比是老大,手下跟着一大帮小弟 (Dao层), 老大不用亲自出马,有事情吩咐小弟去干就行,老大只管下命令,小弟只管做事跑腿。
而为什么我们要通过Service层去调用Dao层,这样做的最大好处就是:
解耦。
说的通俗点就是降低代码之间的耦合,尽量让代码之间不要有太大的联系。
好比主板上内存坏了,我换内存就行,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存就都可以插上这个接口使用。
这样当某部分代码出错或者需要修改时,其他代码就不需要修改或者变更,好处就在这里。
而 Dao 层,只负责接收最终的 sql 语句,具体到某一张表的增删查改。
再用上面的老大和小弟的例子,小弟 (Dao层) 脑子一般不太灵光,不具备什么决策能力。能当上老大脑瓜都比较好使,命令由老大去下达,累活脏活交给小弟去干 (增删查改),底下一大帮子小弟听老大指挥,老大叫谁干什么就干什么。最后完成老大布置的任务。
Service层也不是就非有不可,对于极小的项目而言,加了Service层,反而增加了代码量,而且Dao层中已经预见了可能出现的情况,并进行了相应的扩展。那么,此时就不需要了。
虽然小弟脑子可能不太好使,但是有些事,你没脑子都能完成啊,这时就不需要老大出马了,不然一点屁大点的事都要麻烦老大,老大也太掉价了吧。
但是存在即合理,存在Service层肯定有其原因,通过Service层去调用Dao层,不仅可以解耦合,而且可以增加代码的拓展性。
MVC:模型(model)(dao,service) 视图(view)(jsp) 控制器(controll)(servlet)
一种软件设计规范
- 是将业务逻辑、数据、显示分离的方法来组织代码
- MVC主要作用是降低了视图与业务逻辑间的双向耦合
- MVC不是一种设计模式,MVC是一种架构模式。
MVVM
前端 数据传输 实体类
最经典的MVC就是JSP+servlet+javabean模式
Alibaba早期提出
去IOE(IOE架构就是使用IBM的小型机、Oracle数据库、EMC存储设备)
IBM代表硬件以及整体解决方案服务商,Oracle代表数据库,EMC代表数据存储。
All in One---->微服务(所有的项目都是由一个小项目逐渐演变过来的)
Controller:控制器
- 取得表单数据
- 调用业务逻辑
- 转向指定页面
Model:模型
- 业务逻辑
- 保存数据状态
view:视图
- 显示
MVC框架要做的事情
- 将url映射到java类或Java类的方法
- 封装用户提交的数据
- 处理请求--调用相关的业务处理--=封装响应数据
- 将响应的数据进行渲染.jsp/html等表示层数据
常见的MVC框架:Struts,SpringMVC,ASP.NET MVC、Zend Framework、JSF;
常见的前端MVC框架:vue、angularjs、react、backbone;
由MVC演化的另一些模式:MVP、MVVM等;