这个问题每个阶段的理解不一样, 将来有新的体会再修改吧.
每层做什么?
controller层
控制层. 负责接收参数, 组合参数. 这是程序入口第一层.
收到的只有接口请求类, 在controller层做3项工作,
- 对请求消息进行校验.
- 对请求类进行拆解, 组合得到我们系统需要的对象. 再传入service层.
- 对响应类对象进行组合. 准备返参给调用方
service层
服务层. 核心业务层.
收到的参数是我们系统应有的参数. 所以可以直接运算.
比如根据传入的门诊号, 马上可以调用dao的方法, 得到挂号明细对象.
根据药品编码, 马上得到药品信息.
dao层
数据访问层(Data Access Object).
收到的参数是字符串, int. 或者是面向数据库的javabean对象. 都是一些简单基础的对象.
通过组合sql来得数据库执行结果.
entity层/bean层
entity:实体. 又叫bean层. model层. 也称为pojo层.简单基础对象.
是数据库在项目中的类.该文件包含实体类的属性和对应属性的set,get方法.
为什么要分层? 分层的意义是什么?
什么花里胡哨的. 直接在controller层调用dao得到数据库结果对象不行?
完全可以!
但是不推荐. 原因如下:
就跟相同的一段逻辑需要封装成方法一样, 会提高代码可读性. 一大堆代码堆在controller应该不是那么美观.
方便拓展. spring的优秀之处在于可以通过aop, 只写一个方法, 通过拦截器, 让每层的方法都瞬间增加一个新功能.
方便拓展在于: https://www.junjun.fun/22_11_09_how_to_deal_with_the_spring_exception/