neuhawk

博客园 首页 新随笔 联系 订阅 管理
   2年前,robbin在jdon上大力提倡hibernate,然后又成立hibernate中文网(现在改成javaeye),推广hibernate,于是hibernate在java届开始流行起来,很多新的项目开始用spring+hibernate,如果你不懂hibernate 几乎等于你不懂j2ee了 。连当初banq不太支持 这些ORM,现在都来个 数据库时代的终结 http://www.jdon.com/artichect/dbover

   Hiberante的英文文档和中文文档都看了N次了,始终没有用到项目中。因为我们的项目是做mis之类的(所谓的企业信息化),企业的需求经常变化,比如我们开发好部分模块,并准备拿去实施,结果企业搞什么标准化,很多流程很表格都变化了,如果用hibernate,po,xml,dto,UI,Query,都要变化了,我只要增加一个字段而已,每层都需要变化,不停的重新修改代码,不停的编译,不停的重新发布新版本(对用户来说这点很烦,对我们来说,很难确定什么时候发布新版本,因为用户24小时都用),每个项目实施,都需要N个实施人员+N个开发人员在场。而且hibernate做查询也不方便,动态构造HQL很麻烦(你每个页面都构造?)。
  还有一点就是,mis系统中,在一个列表界面需要很多张表连接,例如: 销售单里 需要零件,客户,价格,部门,员工等等,如果用hibernate, 如a.getb.getXX(),对象b的所有字段都从数据库读取出来,那么性能就很差了 (用不用lazyLoad都不理想)。
  后来又尝试Ibatis,可能用Ibatis的动态查询+Map持久化+XML维护工具 可以解决,但是据说Ibatis的N+1性能不是很好,而且Ibatis用起来比较麻烦。(crud sql语句要写在xml里)。
  当然,象hibernate这样的orm确实可以不用怎么写sql、存储过程,如果先建立POJO,然后再用工具生成xml 和ddl,开发起来很爽了,开发人员不用关心数据库了.可以专注于业务开发和UI的描述,可以很自然的实现领域模型了。

  我觉得象一些需求很确定的系统或者模块,用orm很爽的(.net可能现在还是例外,因为datagrid不能跟po绑定,net2.0会解决这个问题),如CRM,B2B,cms等。
  曾看过一些OA、ERP做的很好,用户可以添加字段,添加表单,维护输入验证,维护界面控件的摆放,这些用ORM实现,现在来说还是比较难吧。
 
posted on 2005-06-05 22:26  neuhawk  阅读(4335)  评论(14编辑  收藏  举报