一、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。 二、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 

解决方案 »

  1.   

    ibats
    用于未完成的项目
    可在其中加入itats
      

  2.   

    Hibernate是O/R Mapping,你可以用HSQL作为它的对象查询语言.他有很多dialect自适应主流数据库,还有middle-gen这样的映射工具。很不错。
    iBatis更轻量,不是纯正的O/R Mapping, 没有HSQL或者EJB QL那样的对象查询语言(现在不知道怎么样了),他其实是Sql Mapping, iBatis包含多个部分,SQL Mapping和DAO等。你可以不用他的DAO只用SQL Mapping.灵活轻量。
      

  3.   

    最大的区别,hibernate封装sql语句;ibatis没有。在分页处理上机制也不同
      

  4.   

    ibatis需要把所有的sql语句写到配置文件里。
      

  5.   

    简单一句话:hibernate全自动,ibatis半自动。
      

  6.   

    是对SQL全封装和半封装的关系,xiaxin是这样说的,我在用的过程中感觉也是这样的
      

  7.   

    当然是用你的需求来决定用哪了,要是客户只给你部字段,那你当然就得用iBatis了,如果不是你就用Hibernate, 是不是太简单了:)