上周在Javaeye论坛看到一个帖子,讨论楼主自己开发的框架和hibernate框架的对比,其实说起来,我蛮同情楼主的,毕竟现在在大家眼里面,hibernate,ibatis,spring 等框架都是超级NB的。都已懂这些开源框架的某些特性而沾沾自喜,其实大家都明白,我们需要的是什么,我们需要一个简单易用,代码容易读,可以轻易理解其功能和原理,而且易用强劲,能解决我们的问题,在系统运行过程中遇到问题,在我们的可控范围内,这样的项目,我想应该是大家想用的,但是问题又来了,现在每个人都在用hibernate,如果你用torque,难保有人会鄙视你,如果你用Hivemind来替代spring,我想肯定会有人说你不懂潮流。
其实我个人觉得,一些小型的应用,比如简单的网站,用用dbutils就足够了。hibernate的强大所带来的问题就是太复杂,毕竟功能多了,那么多的配置文件,让初学者看文档掌握hibernate,我想没几个人能看下去,即使是看源代码,也会看的一头雾水,我看过hibernate源代码好多次,每次都没法完全理解那些接口的用处,当然每次的阅读,我都能得到很多东西,当然现在我也同样有很多地方的代码看不懂,可能我水平太差了。
言归正传,在javaeye论坛里面的那个帖子,貌似楼主公司有个开发框架,叫zving,功能很简单,可以满足一般小的应用的开发,就是因为他说了一句,hibernate不好用,拿他的东东跟hibernate比,结果被骂的很惨,哎,我搞不懂为什么现在的人都这样,我们会用spring,会用hibernate,为什么我们不开发一个跟它一样的东西呢,虽然大家都说造轮子是傻瓜,但是话说回来,你会用人家开源,并不代表你有那个能力做出那样的开源,我感觉适当的时候,造轮子总是应该的,毕竟自己造的轮子,用的放心。
今天我在sourceforge注册了一个项目JDF(Java Develop Framework),可能大家就冲这个名字就要给我扔鸡蛋了,不过没关系,这不还没开始了嘛,我会把这个项目的开发的过程,以及想法,以及一些代码片段记录到博客上面,我想大家可以通过这个学到很多东西。
我打算JDF的内容包括:
数据库层,要求每个表包括 DELFLAG,OP_ID, CREATE_DATE,UPDATE_DATE 四个字段。
可能是由于我对数据的要求比较高吧,这里删除分为物理删除和逻辑删除,物理删除是把记录删除,逻辑删除是更新DELFLAG字段的值。OP_ID是记录这条记录的用户的ID,CREATE_DATE 数据创建时间,UPDATE_DATE 数据更新时间。
每个表可以设置是否设置历史表,历史表负责每条记录的修改记录的备份,对于数据审计要求较高,我想一般的应用,对数据的要求都是越来越高的,数据原则上是不能轻易删除的。
or-mapping ,包括数据的联动读取,联动保存,数据更新的时候,只更新已修改的字段。这里的bean用工具自动生成,由于不想做hibernate那种配置文件那种,因为配置文件对于用户来说,是很头疼的事情,所以bean里面会包含很多内容。
sql-builder,根据bean,生成相应的sql操作代码。支持数据分页读取。
jdbc 接口代理,记录数据库sql,绑定变量,以及sql的执行时间。
数据库连接池,类池,对象池,以及简单的缓存框架,缓存一些小表数据。
利用CGLIB动态的代理类,获取监控数据。
支持多数据库操作,支持一个系统用多个数据库,比如在电信系统里面,一个系统后台会对应多个数据库。
支持分表的处理(只建一个bean)。
按系统标准的开发方式,可以直接把项目的服务层打包成EJB,利用EJB打包工具,直接把应用系统打包成EJB,全面支持JTA,XA,支持直接把服务层打包成webservice。 可以打包支持各种主流中间件的发布。
希望大家有啥好的想法,可以一起讨论,项目马上启动。由于精力和时间,无法开发对应的WEB框架。