Hibernate的优缺点总结

在这里整理一下Hibernate的优缺点,有不完整的地方但愿你们指出。谢谢!web

先说一下Hibernate的优势:sql

1、Hibernate优势:数据库

一、对象化。hibernate可让开发人员以面相对象的思想来操做数据库。jdbc只能经过SQL语句将元数据传送给数据库,进行数据操做。而hibernate能够在底层对元数据和对象进行转化,使得开发者只用面向对象的方式来存取数据便可。缓存

二、更好的移植性。hibernate使用xml或JPA的配置以及数据库方言等等的机制,使得hibernate具备更好的移植性,对于不一样的数据库,开发者只须要使用相同的数据操做便可,无需关心数据库之间的差别。而直接使用JDBC就不得不考虑数据库差别的问题。session

三、开发效率高。hibernate提供了大量的封装(这也是它最大的缺点),不少数据操做以及关联关系等都被封装的很好,开发者不需写大量的sql语句,这就极大的提升了开发者的开发效率。性能

四、缓存机制的使用。hibernate提供了缓存机制(session缓存,二级缓存,查询缓存),对于那些改动不大且常用的数据,能够将它们放到缓存中,没必要在每次使用时都去查询数据库,缓存机制对提高性能大有裨益。优化

 

2、Hibernate的缺点:spa

一、它对JDBC封装过于厉害,因此就失去了对SQL的控制(固然hibernate也可使用native sql既使用createSQLQuery等方法来调用与数据库相关的sql,但这样一来也就影响了hibernate的可移植性),使得hibernate的在不少地方不够灵活,难于优化,尤为对于一些复杂的关联查询时,hibernate提供的功能远不及直接使用JDBC方便性能更高。hibernate

二、hibernate没有提供专门的批处理机制,若是要批量更新或插入数据时,还须要显示的flush,clear之类的操做,性能不如JDBC。orm

三、相对于JDBC,hibernate更消耗内存,由于它每次的数据库操做都要作数据和对象的转换/封装,查询出一条数据就要建立一个或多个对象,这样也太消耗内存了。

四、hibernate提供了不少好处,但这些好处自己就是陷阱(如proxy陷阱等),开发者若是不注意就会调入陷阱而不知,这样就可能会出现一些没法排查的异常状况,好比程序表面上看着毫无错误,可就是达不到预期的效果,并且并没有异常抛出,断点排查也不必定能找到症结所在,这将是很是使人抓狂的一件事!!!!!

相关文章
相关标签/搜索