这两年来,“前后端分离“的事情总有人提,但是其实心里都很清楚,这只是把问题抛给前端开发人员的一个借口。相对于前端开发人员,后端程序员更加清楚业务流程、数据结构和字段命名,在样式确定的情况下,由后端程序员直接编写页面,肯定是非常高效的。
在数据库未确定的情况下,前端开发人员盲目地进行页面设计,这将引发的一些列的问题,而这些问题通常是非常致命的。当我们开心地接过他们写的页面,却发现包括文件的命名、表单字段的命名,与最初的设想差别过大,内心必定是十分奔溃的,代码需要重新编码,浪费两个人的时间,还不如自己写一份。或许,“把问题完全抛给前端,我们只负责后端的编码”是一种解决方案,但就目前的市场情况,大部分公司无法满足这样的需求。
做一个数据管理平台,并不是做一个网站,前端开发人员起到的作用,通常要小于后端开发人员,大部分的页面都是标准化的,是有规律可循的,而“有规律可循”这五个字,对于程序员来说,就是代码可封装的意思。我们有必要将这些重复、麻烦的工作,进行一次编码,对于未来,有一个长远的打算。
数据层
这是一张数据库表的结构信息,包括字段的最大值、最小值、长度、字段命名,一开始就全部定好了,业务就是从这么一张表开始。
映射层
在后端开发中,大部分都是使用ORM持久层框架,因此,需要配置“数据库-Java对象”的映射关系,实际上就是配置Java对象的字段对应于数据库的哪一列。
以下是MyBatis配置:
VO层
在数据库中,一行记录,是一组数据的存储载体,而在Java代码中,VO用于存储一组数据,我们从数据库中取数,取到的结果封装在这样一个对象中。可见:VO的字段全部对应于数据库。
网络接口层
后台服务接口需要进行参数判断,这一层很多人根本没有设计,之前跟其他技术聊天,他给了我个答案“这件事不是交给前端来做么?”,本来想聊一聊这个问题,结果听得我有些尴尬。这个回答某种层度上也算对的吧,如果一开始就没打算把接口开放出去,这肯定是对的。但是作为一个有野心的程序员,并且有着长远的打算,这样的想法肯定是不行的。
我们要相信:我们的项目会做的很大,不仅仅要给前端的页面调用,还要给其他公司调用。而且,往小了说,的确永远不能指望其他人没有失误。
这个设计,其实Hibernate、SpringMVC都有,但是功能相对薄弱,可能不满足实际生产需要,需要针对自己的需求,进行功能加强。
表单层
这一层的代码五花八门,选什么样的前端框架,就有什么样的写法。但是框架一旦确定下来,后续的开发,基本也都是在复制粘贴,跟我们后台开发中的VO一样,结构如何,由数据库决定。
<form> <input type="text" name="firstname"> <input type="text" name="lastname"> </form>
不论是MyBatis还是Hibernate,都有代码生成器,可以帮助我们直接生成一部分代码。从头到尾分析下来,几乎一切代码,都与数据库表结构关联,理论上讲,这些代码是全部可生成的。
从小了考虑,我们可以用好idea的代码模版功能,将我们常常写的代码,直接生成。放长远来,我们可以针对一个企业、一家公司,将代码规范下来,形成一定的代码积淀、代码形成一套标准,可以考虑从数据库配置,直接生成一套服务。