日期:2014-05-16  浏览次数:20514 次

技术随笔之手写jdbc→ibatis的思想斗争
琢磨着山寨公司的“轩辕剑”(人员管理软件),既不要耗费太多时间,又能功能完善,还真不容易,而且一想到jdbc的那些代码,我就有些不舒服……
于是,想到了用框架……
框架再怎么牛X到了下面还不是手写jdbc,手写jdbc通过原子操作一点点地进行着数据库的数据搬运工作(java ? mysql)。虽然用手写jdbc可以精确地控制流程,但是类似的代码,一而再再而三的重复,哥有些受不鸟了。不如看看框架吧,ibatis貌似在公司很流行,虽然之前弄过一阵hibernate,但是纯粹是为了myeclipse中hibernate的逆向工程,代码看起来疼得要命,麻烦得不行了都……今天看了看ibatis,发现还真的很简单。配置一个驱动,驱动里面给一个地址指向要操作的数据对象对应的sqlmap,sqlmap里把sql语句配好,OK可以去调用了。Java→mysql的set工作交给ibatis,mysql→java的解析工作也可以交给ibatis,少写多少代码呀~!但是猛的发现不是那么回事儿,公司的代码有好几层,BaseDAO→ADAO→implement ADAO→调用sqlmap,前面突然多了3层….有不懂问师兄,师兄给讲了半天的业务需要,当扩展的时候修改sqlmap调用不好使,那好多一层implement ADAO,ADAO这个接口干嘛用?虽然说BaseDAO里面可以用来写公共的抽象方法,ADAO里面可以写ADAO独有有的抽象方法,但是我为什么要这样做?我直接用implementADAO来实现BaseDAO不就完了?师兄也觉得用功能扩展的理由不能打发我了,他猛地一拍大腿:“我们调用的时候通过接口来实现动态联编,防止我们的实现类被暴露。”原来是解决安全问题。还有,如果有一天ibatis收费了,要改用别的框架,只需要去重新写一套implementADAO就行了,因为只有implement这一层才是和ibatis才是直接和框架打交道的。如果迁数据库呢,只需要该配置文件就好了。为了让自己的程序更为健壮,多出来这么多东西……如果不需要那么好的安全性,不需要那么好的扩展性,其实有sqlmap就够了….
仅以此小记来说说我们那些看似麻烦却有必要的活儿~~