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陷阱等),開發者若是不注意就會調入陷阱而不知,這樣就可能會出現一些沒法排查的異常狀況,好比程序表面上看着毫無錯誤,可就是達不到預期的效果,並且並沒有異常拋出,斷點排查也不必定能找到癥結所在,這將是很是使人抓狂的一件事!!!!!

相關文章
相關標籤/搜索