Hibernate,憋脚的ORM框架

  以前一直使用iBatis,后来看到Hibernate这么火,就研究了一下,使用过一个简单项目,感觉到非常不爽,也许是我没有使用好。来到这里一吐为快,我知道这里的hibernate高手很多,请这些高手手下留情,不要B4我。

  总结:由于Hibernate的设计思想,他对简单的增、删、改、查询支持不错。对于复杂的SQL支持就欠缺了。适用于留言簿等简单的系统。


Hibernate优点:
  1、配置简单,不用写Sql。
  2、Cache机制做得好,能够精确Cache、Flush对象。
  3、简单的增删改的Java代码简单。
  4、如果不用本地SQl,就可以跨数据库。(不过,谁一天没事做就换数据库啊?)
  5、简单的开发效率高。

Hibernate缺点:  
  1、1对1关联在load的时候,居然用left join 实现,太可怕了(右边对象的单独cache失去作用了)。
  2、组合查询同jdbc一样,需要写if (xx) {CriteriaSpecification.add(Criterion)}类似语句,Java会显得完全不可读。
  3、get和load似乎只适用主键,如果表上有其它条件能得到唯一对象,就必须使用list.get(0)了,郁闷。
  4、由于底层sql不可控,想要优化sql困难太大了(使用本地SQL?),数据库一般都支持采用哪个索引检索,如mysql的 force index(indexname)。在这种情况下,hibernate用不上(又要写本地SQL?)。
  5、调用Oracle procedure,如果procedure返回了cursor,接收cursor太复杂了。如果是cursor套cursor,那更加不可想象的复杂。
  6、DB级的SQL特性很难用上,如函数,特别是insert,有很多缺省值是sysdate()一类语句,hibernate要用上,就必须写本地insertsql,这样又复杂了。
  7、如果查询采用本地SQL,则你会发现在Java代码中有n多if else,StringBuffer.append,外加一个substring。
  8、据我所知,99%的DBA 100%反对使用hibernate。
  9、大型项目不适用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值