1.3 为什么不能一直做CURD?

什么是CURD?
就是Create Update Read Delete操作,通常是指对依托对数据库的增删改查,实现功能开发的过程。
代码实例


这样的开发有什么问题?
举例来说:
商品下单,对应的是数据库中保存了商品的订单的记录,视为商品下单成功了
修改订单的状态,表现为修改数据库的状态字段。
示例代码如下
订单表如下:

这样开发有什么问题?
1. 业务被数据库所绑架
数据库的数据就是业务的结果,业务被数据库所绑架,调整数据库将是在对业务调整。

在业务被数据库所绑架,并且数据库表与表还有关联,有时候还有数据冗余,大部分程序员在面对这样的数据库设计下,都不敢改动,除非必要,不然不敢动。
单元测试形同虚设
由于业务被数据绑架,单元测试高度依托于数据库,导致单元测试完全是对数据库的测试了,让单元测试失去了其价值。

单元测试就是施工的防护架,没有他就很容易让施工,变成了拆除。
由于业务入口遍布各地,系统无法轻易更改,容易牵一发而动全身
由于dao层的代码遍布在service层的各处,导致同一个表的数据维护将会在项目很多地方出现,在缺乏约束的情况下,导致业务对数据维护变的泛滥,让系统的维护性大大降低。
举例来说
修改订单状态的场景:
用户取消订单,商家取消订单,商家确认发货,用户确认收货等,这些地方可能都是直接调用
dao.updateStateById(id,state)的代码执行的。
假如需要增加对订单状态的统计功能,你或许需要将上述所有的地方都得修改一遍。

对于接收项目的人来说,轻易不敢修改,搞不好就是一场灾难。