Hibernate的優點:
1、對象化。hibernate可以讓開發人員以面相對象的思想來操作數據庫。jdbc只能通過SQL語句將元數據傳送給數據庫,進行數據操作。而hibernate可以在底層對元數據和對象進行轉化,使得開發者只用面向對象的方式來存取數據即可。
2、更好的移植性。hibernate使用xml或JPA的配置以及數據庫方言等等的機制,使得hibernate具有更好的移植性,對於不同的數據庫,開發者只需要使用相同的數據操作即可,無需關心數據庫之間的差異。而直接使用JDBC就不得不考慮數據庫差異的問題。
3、開發效率高。hibernate提供了大量的封裝(這也是它最大的缺點),很多數據操作以及關聯關系等都被封裝的很好,開發者不需寫大量的sql語句,這就極大的提高了開發者的開發效率。
4、緩存機制的使用。hibernate提供了緩存機制(session緩存,二級緩存,查詢緩存),對於那些改動不大且經常使用的數據,可以將它們放到緩存中,不必在每次使用時都去查詢數據庫,緩存機制對提升性能大有裨益。
hibernate的缺點主要有以下幾點:
一、由於對持久層封裝過於完整,導致開發人員無法對SQL進行優化,無法靈活使用JDBC的原生SQL,Hibernate封裝了JDBC,所以沒有JDBC直接訪問數據庫效率高。要使用數據庫的特定優化機制的時候,不適合用Hibernate
二、框架中使用ORM原則,導致配置過於復雜,一旦遇到大型項目,比如300張表以上,配置文件和內容是非常龐大的,另外,DTO滿天飛,性能和維護問題隨之而來
三、如果項目中各個表中關系復雜,表之間的關系很多,在很多地方把lazy都設置false,會導致數據查詢和加載很慢,尤其是級聯查詢的時候。
四、Hibernate在批量數據處理時有弱勢,對於批量的修改,刪除,不適合用Hibernate,這也是ORM框架的弱點