下面介绍下Hibernate的四大优点,有兴趣的朋友可以看一看:
一、Hibernate优点是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EJB不是一个范畴的东西,也不存在非此即彼的关系。二、Hibernate优点是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。三、Hibernate优点不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是Entity Bean的替代者出现的,让我再列一次我已经列n次的框架结构:传统的架构:
1) Session Bean <-> Entity Bean <-> DB
为了解决性能障碍的替代架构:
2) Session Bean <-> DAO <-> JDBC <-> DB
使用Hibernate来提高上面架构的开发效率的架构:
3) Session Bean <-> DAO <-> Hibernate <-> DB就上面3个架构来分析:
1、内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。2、运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此Hibernate架构表现出最快的运行效率。EB的架构效率会差的很远。3、开发效率:在有JBuilder的支持下以及简单的项目,EB架构开发效率最高,JDBC次之,Hibernate最差。但是在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人,JDBC次之,而EB架构很可能会失败。4、分布式,安全检查,集群,负载均衡的支持
由于有SB做为Facade,3个架构没有区别。四、EJB和Hibernate学习难度在哪里?EJB的难度在哪里?不在复杂的XML配置文件上,而在于EJB运用稍微不慎,就有严重的性能障碍。所以难在你需要学习很多EJB设计模式来避开性能问题,需要学习App Server和EJB的配置来优化EJB的运行效率。做EJB的开发工作,程序员的大部分精力都被放到了EJB的性能问题上了,反而没有更多的精力关注本身就主要投入精力去考虑的对象持久层的设计上来。Hibernate难在哪里?不在Hibernate本身的复杂,实际上Hibernate非常的简单,难在Hibernate太灵活了。当你用EJB来实现持久层的时候,你会发现EJB实在是太笨拙了,笨拙到你根本没有什么可以选择的余地,所以你根本就不用花费精力去设计方案,去平衡方案的好坏,去费脑筋考虑选择哪个方案,因为只有唯一的方案摆在你面前,你只能这么做,没得选择。Hibernate相反,它太灵活了,相同的问题,你至少可以设计出十几种方案来解决,所以特别的犯难,究竟用这个,还是用那个呢?这些方案之间到底有什么区别呢?他们的运行原理有什么不同?运行效率哪个比较好?光是主键生成,就有七八种方案供你选择,你为难不为难?集合属性可以用Set,可以用List,还可以用Bag,到底哪个效率高,你为难不为难?查询可以用iterator,可以用list,哪个好,有什么区别?你为难不为难?复合主键你可以直接在hbm里面配置,也可以自定义CustomerType,哪种比较好些?你为难不为难?对于一个表,你可以选择单一映射一个对象,也可以映射成父子对象,还可以映射成两个1:1的对象,在什么情况下用哪种方案比较好,你为难不为难?

解决方案 »

  1.   


    你见过神马大并发,大数据量,安全,稳定性要求极高的系统用hibernate?
    框架害死人啊
    一拉就是神马ssh
    都是浮云
    多搞基础才是王道
      

  2.   

    看我的文章更详细
    http://blog.csdn.net/huanggangmaojin/article/details/6413750
      

  3.   

    你这文章是抄来的吧?都不知道是 N 年前的了。Entity Bean 在 2006 年 5 月 Java EE 5 正式发布的 EJB 3 中就已经取消了,仅作为兼容性而保存着。Hibernate 只适用于小型系统,除此之外,没有什么优点。
      

  4.   

    感觉现在Hibernate高不成低不就的。感觉MyBatis还比他好用点。实际项目中,一个也不用。
      

  5.   

    我说的ibatis和mybatis是同一个东西
      

  6.   

    帖子的题目是hibernate的四大优点,不是hibernate的四大缺点不过hibernate用起来还是挺不错的
      

  7.   

    3、开发效率:在有JBuilder的支持下以及简单的项目,EB架构开发效率最高,JDBC次之,Hibernate最差。但是在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人,JDBC次之,而EB架构很可能会失败。---------------------------------------------------也许是我水平不够
    我觉得在表关系复杂的情况下很难直接用hql,都要直接写sql才能解决
      

  8.   

    hibernate 用好了才是王道!用不好,就会觉得是累赘,我们项目全部都用hibernate 我们快递行业,数据量不用我说,不算特别大也不算特别小!hibernate不光只有hql  sql也能用,不要给我说用了sql就失去了hibernate的特点了,换数据库的可能性实在是太小了!hibernate给我带来的感觉就是开发效率高了!其它就不多说了,那些说hibernate不好的,自己摸摸良心你用好了吗?
      

  9.   

    什么都是浮云iBatis、hibernate都是工具,最重要的是会驾驭它!就跟一个老会计一样,就是不会用电脑做账,他就觉得电脑不好用就是算盘好用!因为他无法驾驭它,所以就说不好!难道电脑真的没算盘好???
      

  10.   

    我觉得离与底层越近的东西,性能越好,虽然jdbc纯手工写,但是他性能方便是最牛的!
      

  11.   

    求解:关于对复杂的数据操作时,使用传说中的hibernate还给力么         Lz ++++++++++++++==
      

  12.   

    在这里说什么hibernate不好的人请看清楚题目  Hibernate的四大优点
      

  13.   

    在开发效率和性能上,总是会有取舍。
    如果HIBERNATE的性能很NB,开发效又简洁。。
    我X。那怎么还会有别的框架???!!!???
    各有特色,不同的系统要求,不同的开发需求。。会采用不同的框架架构
      

  14.   

    Hibernate N大缺点,大家知道多少?1、针对某一个或是某几个对象,简单的把它查询上来、然后再对他进行编辑、修改;而且编辑、修改只是对单个对象、而不是对所有的对象进行批量的修改;
    2、不适合于批量的、聚集性的操作;
    3、对象之间的对应关系如果很错综复杂,也不适合OR映射:简单的清晰的对应关系如 many to one 等,很适合。
    4、如果我们要使用某数据库中的一些特定的功能的时候,如优化,是不适用的:因为sql语句是无法控制的,是hibernate自动生成的。 
      

  15.   

    确实,hibernate自动生成语句是优点也是缺点~~~
      

  16.   


    没做个数据量大的东西,不知道理解有没对,hibernate的hql是可以批量更新的的,和sql语法一样...hibernate是可以使用sql的,不知道你指的特定功能。。难道不能用sql来搞???
    不过不知道hibernate对视图的映射有没什么不好的地方,没去试过。
      

  17.   

    h框架是用来提高开发效率的,。。如果很要性能的系统,还要框架做啥,甚至,要不要考虑用java都是问题。
      

  18.   


    不用跟三脚猫一般见识。看源码啥的也就不要求了,很多人Hibernate的java文档都没好好读过,就上来噴了。
      

  19.   

    主要缺点:
    1、写复杂的多表查询sql不行,也是最致命的缺点,导致一些功能无法实现。
    2、查询比较慢,特别是单个数据,对一些要求高效率的系统也是致命的。
      

  20.   

    越来越觉得hibernate不好使了......