断断续续的做了3个月,总算是将这个系统完成了,总的来说这算是自己做的第一个J2EE项目吧。由于是第一次,自然是毫无经验,所以在做的过程中发现了很多问题,同时也吸取了很多教训吧,所以还是简单的总结一下。
首先说需求分析,感觉需求分析做的相当不足,就简单的谈了几次,而且我也只是在做数据库设计的时候才看过需求文档,在后期的开发工程中几乎就没看了。而且由于需求分析做的不足,所以导致数据库的设计与需求有所不符,导致后面实现某个功能的时候相当麻烦。
再说系统设计,其实这个系统就没怎么做系统设计,把数据库设计好后就直接开始开发了,而且前台和后台还是分开开发,完全没管对接的事,自然也就没什么文档了,所以当需要前、后台对接的时候,必须和志飞待在一起,不然我俩都没法做,因为没有文档可以查看,所以很难知道对方是怎么做的。而且,由于最初我是走的自底向上的开发模式,所以对系统的扩展性考虑的很多,也写了很多扩展接口,结果最后发现很多都不需要,因为前台根本没提供这些功能,所以算是做了很多无用功吧。不过这一点让我深刻的感受了一把自顶向下和自底向上的两种开发模式的不同,前者由于只针对需求做开发,所以速度上占有一定的优势;而后者,自然在系统的可扩展性方面考虑的更充分,所以当系统需要升级什么的,会方便一些。
然后说说项目文档,还是因为自己太懒了吧,所以几乎没写文档,还好这个系统就2个人做,所以由于缺乏文档而带来的问题还不是很严重,不过要是团队人数多了以后,要是再没文档,那就真的麻烦了……
最后说说对SSH框架的感受吧,之前所听到或者看到的都说这些框架很好,自己用了感觉确实也不错。但是,由于缺乏基础知识,所以在使用框架的过程中遇到了不少问题,而且有些问题还花费了不少时间去解决,甚至有些问题究竟是为什么也没法考证,只能从侧面去解决。尤其是Hibernate,后期遇到的问题几乎都和其相关,而最严重的问题就是由于JSON在序列号对象时,会将所有的对象以及对象所包含的集合全部遍历一次,所以虽然Hinbernate的查询设置了lazy机制,但却依然会将数据库里面的所有数据查出来,刚开始还没发现,后面数据库里面的数据量稍微大点后发现,随便一个链接就是几兆的流量,再一看sql语句,发现数据库里面的数据全给查出来了。刚开始还以为是Hibernate的原因,上网也查了不少资料,还是没发解决。最后通过跟踪调试发现轮数据库是发生在Action调用结束,返回界面之前,这就说明不是Hibernate的原因,最后猜测是JSON在序列化对象时将所有的对象都遍历了一次所致。但是却不知道怎么解决,因为已经离开Action,也就是说问题发生在后台调用结束,返回前台之前……纠结了2天吧,最后在吃饭的时候,突然想到,既然他去遍历我没法阻止,那就只好让其没得内容可遍历,所以把Hibernate的映射配置弱化之后,发现问题终于解决了。再有就是一旦涉及插入、更新或者删除数据的时候,一不小心就抛一个异常出来,写的BaseDAO也是改了又改……最后得出的结论就是没有足够的经验,Hibernate真的不要轻易使用。
总的来说吧,个人觉得用别人的框架,的确可以加快开发速度。但要是遇到问题的时候解决起来也会稍显麻烦,尤其是在自己基础知识不牢,经验不足的情况下。而由于框架都是针对某一类问题而设计的,所以框架在工作的时候都需要做出当前应该采用什么方式的判断,这样的话对系统性能自然会有所影响。除此之外,针对具体的系统来说,可能只需要框架里面的某一个功能,所以其它功能都是多余的;同时也可能存在对于特定问题框架提供的解决方案存在缺陷甚至是没有。但要是完全不使用框架的话,那么所有的事都得自己做,这样系统功能专一性确实达到了,没有多余的判断,没有沉于的功能……但开发周期却会因此而延长,设置有时这样的延长是不可忍受的。而这些确实框架的一大优势,所以在框架的选择上一定要合理。