hibernate性能对比文章

源:http://daquan198163.iteye.com/blog/148055

评:

也不仅仅是hibernate一个框架的问题了,其实可以上升到O/R Mapping的应用策略问题
几乎每隔几周就会出现类似的讨论,比如 主题: 有没有Hibernate的成功大型项目实现?Hibernate,憋脚的ORM框架
这说明这个问题还是很有讨论的必要。

过去的几次比较热烈的讨论我基本都看了,焦点主要集中在这几个方面:

1、以数据库为中心建模 VS 以领域模型为中心建模:
   老开发人员大多倾向于前者,因为比较符合过去的开发习惯,另外他们强调数据库的生命周期大于App
   向我这样的只有几年工作经验的往往会倾向于后者,因为这能更充分发挥ORM的威力,更符合OO,免去很多维护DB的繁琐工作。

2、Hibernate VS iBatis/JDBC:
   担心失去对SQL待控制权,导致不能做优化,DBA反对
   Hibernate是在JDBC之上的又一层框架,因此想当然的认为其性能不如iBatis/JDBC(我认为这个结论不成立,因为引入一个ORM层给了我们更多机会去优化性能,比如一二级缓存、lazyload、查询缓存,并且方式更优雅)。参考为什么ORM性能比iBATIS好? http://robbin.iteye.com/blog/77338?page=2#comments
   担心OpenSessionInView模式有性能问题(http://www.iteye.com/topic/17501)
   Hibernate无法应付复杂查询(我认为这不是问题,HQL和criteria查询能力很强,再不济还可以用SQL啊)

3、对Hibernate等ORM框架能否胜任大型项目的怀疑:
   其实项目大小不是技术选型的主要考虑,关键看项目类型,OLTP还是OLAP、广而浅型的还是窄而深型的、数据量大小等等,这些因素更能影响结果

4、Hibernate学习成本高
   不可否认,相对于spring、struts,Hibernate是一个学习曲线陡峭的框架,但是我觉得综合考虑开发效率和长期收益,还是值得学习和采用的

其实有一个事实被很多人忽略了——Hibernate只是对JDBC的一个封装,因此它可以跟iBatis/JDBC在同一个项目中并存,就好比突击步枪和狙击步枪的关系,两者都有存在的价值和适用场合,不能互相取代。
但是,显然突击步枪是大量装备的通用武器,而狙击步枪是少量装备的特种武器

参考帖子:
OpenSessionInView会不会影响性能?
选择Hibernate还是iBatis?
选择Hibernate还是iBatis?
我为什么选择 iBatis 而不是 Hibernate(对于正在选型的人的建议)
Hibernate,憋脚的ORM框架
对迷茫于Hibernate/JPA的人提一些建议。
为什么ORM性能比iBATIS好?

猜你喜欢

转载自mauersu.iteye.com/blog/1770480