持久化ORM框架——Hibernate與mybatis


  最初SUN公司推出了JavaEE服務器端組件模型(EJB),但是由於EJB配置復雜,且適用范圍較小,於是很快就被淘汰了。與EJB的失敗伴隨而來的是另外一個框架的應運而生。他就是至今也比較流行的Hibernate。

 

Hibernate(適用於場景不太復雜,要求性能不苛刻)

  Hibernate是建立在POJO和數據庫模型的直接映射關系上的。

  Hibernate是建立在若干POJO通過XML映射文件(或注解)提供的規則映射到數據庫表上。換句話說,我們可以通過POJO直接操作數據庫的數據。它提供的是一種全表映射的模型。相對而言,Hibernate對JDBC的封裝程度還是比較高的,我們已經不需要編寫SQL語言,只要適用HQL語言就可以了。

  Hibernate的XML文件描述的是POJO和數據庫表的映射關系。Hibernate通過配置文件(或注解)就可以把數據庫的數據直接映射到POJO上,我們可以通過操作POJP做操作數據庫記錄。對於不擅長SQL的程序員來說,這是莫大的驚喜,因為通過Hibernate你幾乎不需要編寫SQL就能操作數據庫的記錄。

  其通過建立Hibernate的工廠對象(SessionFactory),用它來做全局對象,產生Session接口,就可以操作數據庫了。

  Hibernate的優勢主要是:
  (1)在配置了映射文件和數據庫連接文件后,Hibernate就可以通過Session操作,非常容易,消除了JDBC帶來的大量代碼;

  (2)同時還提供了級聯、緩存、映射、一對多等功能。

  缺陷:

  (1)全表映射帶來的不便,比如更新時需要發送所有的字段。

  (2)無法根據不同的條件組裝不同的SQL。

  (3)對多表關聯和復雜SQL查詢支持較差,需要自己寫SQL,返回后,需要自己將數據組裝成POJO。

  (4)不能有效支持存儲過程。

  (5)雖然有HQL,但性能較差。大型互聯網系統往往需要優化SQL,而Hibernate做不到。

  

   在當今大型互聯網中,靈活、SQL優化,減少數據的傳遞時最基本的優化方法,顯然Hibernate無法滿足我們的要求,於是,MyBatis框架誕生了。

 

MyBatis(靈活的、可以動態生成映射關系的框架)

  MyBatis是一個半自動映射的框架,它需要手工匹配提供POJO,SQL和映射關系,而全表映射的Hibernate只需要提供POJO和映射關系便可。

  MyBatis所需要提供的映射文件包含三個部分:

  (1)SQL

  (2)映射關系

  (3)POJO

  MyBatis需要自己編寫SQL,但是支持配置動態SQL,MyBatis幾乎能做到JDBC所能做到的所有事情。MyBatis具有自動映射功能。換句話說,在注意一些規則的基礎上,MyBatis可以給我們完成自動映射,而無需再寫任何的映射規則。

  缺點:

  配置工作量大。

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM