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