生产力和跨数据库可移植性是两个原因.Hibernate/NHibernate或其他ORM允许人们轻松地将对象序列化到数据库或从数据库中序列化,而无需手动编写(和维护)大量SQL语句来完成这些操作.我不了解你,但为我们系统中的数百个对象编写和保存大量CRUD查询不是我的乐趣,也不是开发人员的时间!我不确定NHibernate是否有类似的机制,但Eclipse的Hibernate Synchronizer插件真的很棒:采用映射文件并自动生成对象和DAO.好东西!
性能(在L1和L2缓存中)是另一个原因 - 当然你当然可以写出骨干的findAll()类型代码,这使得这一点没有实际意义,但总的来说他们已经投入了大量的时间和精力,所以它更多代码你不必重塑自己.
现在可以肯定的是,N/Hibernate有一个非常重要的学习曲线,但是大多数事情一旦你得到它你就会想到没有它你是如何生活的.
也就是说,ORM不是一颗银弹(尽管它们非常好,一般而言)并且它们并不适合所有情况.我们仍然为复杂或高度优化的查询编写SQL.也就是说,我的团队中的开发人员对Hibernate发誓,如果我们回到直接编写SQL的话,他们可能会反抗.