言之有理,对有复杂对象,比如要从三个以上的表中取数据来生成对象的,还不如直接写SQL语句。
不过大部分情况上还是可以很好的使用的,可以省开发时间。当要改动数据库结构时也比较方便

解决方案 »

  1.   

    我不太赞同你的观点。hibernate的主要设计目的不是简化数据库编程,而是实现ORM,也就是说,用面向对象的技术建立业务模型,用关系数据库进行持久化。如果没有面向对象的业务模型,就不要使用hibernate,也不要用ejb,用JDBC更好(最好用一些简化JDBC的简单框架)。许多项目基本上没有面向对象的业务模型,业务逻辑与数据库操作混和在一起,所以直接用JDBC反而更方便。如果此时使用hibernate,就需要建立所谓的业务对象,并且要受限于hibernate的一些功能。但是这种对象只是为了用于存储,没有封装业务逻辑,只有数据和get、set方法,没有行为。这样就给我们一个坏影响,hibernate复杂且功能受限。这种情形下,我们即没有享受到面向对象的业务模型的易维护性、重用性;也没有享受到JDBC的简洁。其实这种项目反而是我们平常最常见的。对于复杂的商业软件,面向对象的业务模型就很重要了,此时将业务逻辑与数据库操作混和在一起就是一场恶梦。这时hibernate就可以排上用场了,用JDBC手工将对象映射到关系数据库中就太辛苦了。对于中小商业软件,建立面向对象的业务模型也是可行的。但是,许多程序员对OO的理解还不够透彻,首次建立业务模型还是相当困难的。希望大家能早日跨进OO的世界。
      

  2.   

    对于多表关联的情况,取值很方便,但是插入时很复杂。不过就像jiafcat说的一样,它主要是为了实现orm,让我们只对对象进行编程,而不必考虑对数据库的操作。