感叹:有多少东西被你丢弃
06 Jul 2004我犯了一个巨大的错误,那就是打算不用任何O/R映射的工具来实现新项目中所有的底层数据操作。当我完成两个实体类的CRUD操作时,我面对的是两个巨大的、充满SQL语句、看起来乏味至极毫无创意的一堆INSERT, UPDATE, DELETE。我不得不承认我的错误:面对这样一个可能有三十多个表、每个表最多有二十多个字段的O/R映射操作,正常的人都不会将这些无味的工作进行到底的。我不禁想起了EJB中的BMP:在一个稍具规模的系统中,究竟有谁会最终去手写这么多重复毫无创造力的纯粹体力劳动的该死的SQL来维护对象持久性?也许有人,肯定不是我。
因为项目以及技术熟练度的原因,我们不能采用Hibernate、JDO或者任何一种开源的O/R映射框架。无奈之下我重新看起了公司自有产品平台的关于数据映射部分的东西。在早先的时候,这个笨重庞大缺乏文档的平台被我讥讽了无数次:没有体现任何设计模式,所有的对象都可以New出来(也只能通过new的方式产生实例)。他的DAO跟我理解的DAO完全不是一回事,平台的DAO等于数据操作+数据原型。毫无疑问,追求优美的我当然不会放过这个毫不OO的缺点,于是他被我打入冷宫,直到现在。然而,现在重新看这个DAO的设计,却能够很好的将我从困境中解脱出来——他提供了一个代码生成器!通过一步一步地Next,一个二十个字段的表映射的DAO(我很忌讳这个词,读音同'岛')和它对应的ValueObject,在几秒之内产生出来。令我不禁震惊。
于是我开始重新思考这个平台的价值:简单,易用,容易上手。这是我对它最直接的评价。无论如何,它在现有条件下为我节省了大量的时间精力,并且提高了项目的成功率。这个饱经我嘲笑冷遇的平台,第一次在我眼里可爱起来。
我不禁开始感叹,有多少东西被我们在追求技术的过程中轻松的丢弃?由于第一眼的看不上,以后便一直抱有偏见,比如我现在一直耿耿于心的WebService, EJB, 以及抱有观望态度的AOP。自以为对软件之美已经有了自己的见解,但在这个项目中救我于水火的却是我看不上的东西。
我又记起来很土的一句话,生活中不是缺少美,而是缺少发现。这句话用在对技术的学习,倒也合适。我想我以后不应该再随便下结论了,无论对一个小得不能再小的方法,还是一个宏大的框架蓝图。