在重构M层代码以前,我们复习下前面我们各层的调用。
以删除数据为例, 我们完成一个删除操作的时序图如下:
![https://box.kancloud.cn/3fde443d763a03ce4cb793b8bc78c246_1418x574.png](https://box.kancloud.cn/3fde443d763a03ce4cb793b8bc78c246_1418x574.png)
通过上图,不难发现,在进行一般数据增删改查的操作时,server层只是起到数据转发的作用。当由C层获取到数据后,直接调用了实体层中的相应的方法。不错,如果不进行一些其它的逻辑的运算,server层在这里是可有可无的。但在实现的软件开发中,我们很少接触到只有简单的增删改查,所以server层的存在是有必要的。
我们在看实体层。我们在前面说过,实体(entity),其实对应的是数据表。即实体类中的第一项信息,都需要与数据库中的数据表相对应。
而在上图中,我们在实体层中,却增加了`getTeacherById()`及`delete()`方法。而数据表只能对应字段及对这些字段设置的set与get方法。所以,从规范性的角度上来讲,非set/get方法是不能写在实体类中的。
> hibernate还支持使用xml配置文件对实体进行定义,而xml文件中是不可能存在CURD方法,所以CURD方法必须由实体层脱离。
鉴于此,我们引入dao(data access object),数据访问对象层。我们不适合写在实体层中的语句,改写到DAO层。
改写后,我们在进行删除操作时,时序图如下:
![https://box.kancloud.cn/342246b6785779f663e8fa802b636174_1482x560.png](https://box.kancloud.cn/342246b6785779f663e8fa802b636174_1482x560.png)
此时,我们在数据访问DAO层中,写入具体的CURD的方法。而在实体entity层中,写入实体的属性。这样做使得代码更加的清晰,分工更加的明确,冗余度更低,代码更易维护。对实体entity层或是数据访问DAO层进行更改时,对另外一层不造成影响。更加有利于团队开发。
<hr />
将教师实体中的CURD方法,转移至数据访问dao层。将调用dao层,来实现数据的CURD操作.
- README
- 第一章:准备
- 第二章:Hello World!
- 第一节:查看工程文件
- 第二节:JDK、JRE与环境变量
- 第三节:index.jsp
- 第三章:Hello Struts
- 第一节:Web.xml
- 第二节:单入口
- 第三节:Hello Struts
- 第四节:触发C层
- 第四章:建立数据表
- 第一节:建立实体类
- 第二节:测试一
- 第三节:测试二
- 第四节:引入Hibernate
- 第五节:配置Hibernate
- 第六节:建立连接
- 第七节:实体类映射数据表
- 第八节:完善数据表
- 第五章:教师管理
- 第一节:增加数据--add
- 第二节:增加数据--save
- 1 获取传入数据数据
- 2 数据写入测试
- 3 对接C层
- 第三节:数据列表
- 1 获取数据
- 2 重构代码
- 3 C层对接--初始化
- 4 C层添加数据
- 5 V层显示数据
- 6 获取数据库中数据
- 7 显示性别
- 8 分页
- 9 条件查询
- 第四节:修改数据
- 1 edit
- 2 update
- 第五节:删除数据
- 第六节:总结
- 第六章:重构C层
- 第一节:继承ActionSupport类
- 第二节:数据验证
- 第七章:前台分离(前台)
- 第一节:环境搭建
- 第二节:运行环境
- 第三节:共享开发环境
- 第四节:生产环境
- 第八章:前台开发(前台)
- 第一节:本地化
- 第二节:教师列表
- 1 引入M层
- 2 模拟后台返回数据
- 3 C与M对接
- 4 C与V对接
- 第九章:前后台对接(前后台)
- 第一节:后台输出json(后台)
- 第二节:对接前台(全栈)
- 第二节:对接API(前台)
- 第二节:跨域请求(后台)
- 第三节:重构代码(前台)
- 第十章:重构后台M层
- 第一节:数据访问DAO层
- 第二节:项目整体重构
- 第十一章:用户登陆(前后台)
- 第一节:制定规范
- 第二节:定制测试用例
- 第三节:后台输入测试代码(后台)
- 第四节:postman(后台)
- 第五节:新建用户登陆模块(前台)
- 第六节:代码重构(前台)
- 第十二章:班级管理(前后台)
- 第一节:班级列表
- 1 原型开发
- 2 制定规范
- 3 后台对接开发
- 4 前台对接开发
- 第二节:Add
- 1 原型开发
- 2 制定规范
- 3 后台对接开发
- 4 前台对接开发
- 第三节:Save
- 1 制定规范
- 2 后台对接开发
- 3 前台对接开发
- 第四节:Edit
- 1 原型开发
- 2 制定规范
- 3 后台对接开发
- 4 前台对接开发
- 第五节:Update
- 1 制定规范
- 2 后台对接开发
- 3 前台对接开发
- 第六节:Delete
- 1 制定规范
- 2 后台对接开发
- 3 前台对接开发
- 第七节:小结
- 第十三章:班级管理(API)
- 第一节:ER图
- 第二节:create
- 1 实体层
- 2 dao层
- 3 service(server)层
- 4 action层
- 第三节:ManyToOne
- 第四节:Read
- 1 service(server)层
- 2 action层
- 第五节:update
- 1 service(server)层
- 2 action层
- 第六节:update
- 第十四章:重构服务层