框架學習:hibernate框架的結構和分析

五柳-先生發表於2016-03-21

在上篇部落格中介紹了struts2框架的原理和流程分析,可以說struts框架一路走來,改變非常大,而且讓我們開發人員變得更加輕鬆,裡面的設計理念的改變也是讓我們程式設計人員的思路得到更大的擴充套件。

 

 

       可以說,一個先進的技術或者框架就是要不斷的進步才能永遠讓程式設計人員喜歡和使用,一個優秀的程式設計人員也是要不斷的進步才能永遠讓這個世界變得更加絢麗多彩。

 

      其實程式設計就是這樣有意思的!

 

      前面說了一些巨集觀上學習框架相關的思想方面的東西,下面繼續來介紹我經常使用的框架和框架的分析,這篇部落格主要介紹的是hibernate框架。

      首先說hibernate框架是資料持久層的框架,這個框架是非常強大的,它讓程式設計人員純粹的用物件導向的方式來做開發,讓程式設計人員所面對的都是物件。僅僅從這一點它的設計思路就是非常讓程式設計人員喜愛的。

      回想我們普通的開發流程,和客戶溝通定需求,抽象出來原型,從原型中建立資料模型到庫表結構的建立,之後在對映成物件模型,之後在用oo的設計思想完成後續的程式開發。但是當我們使用了hibernate框架以後,原先的設計思路就顯得不再那麼具有優勢了。我們直接建立物件模型,之後利用hibernate框架對映成資料模型,我們不再去考慮資料庫關係模型的東西,僅僅考慮的東西僅僅就是類和物件,這樣的開發才是物件導向的開發,也才是最接近人類思考問題的方式。所以hibernate框架的設計思路是非常好的。

        hibernate框架設計思路的優越性其實體現在了它本身的框架的原理上。hibernate封裝了JDBC,減輕了開發人員在持久層的大量重複性工作,它利用了java反射機制來實現程式的透明性;它就是通過這兩點才達到從物件出發而非關聯式資料庫出發的效果。

 

      介紹這麼多理論性的東西之後我們能夠感覺到hibernate框架的強大,來看看它的結構圖:

 

 

       在hibernate框架中有幾個比較重要的介面和類:

  1. Query介面:Query負責執行各種資料庫查詢。它可以使用HQL語句或SQL語句兩種表達方式。
  1. Configuration類:Configuration類負責配置並啟動Hibernate,建立SessionFactory物件
  1. SessionFactory介面:SessionFactory介面負責初始化Hibernate。它充當資料儲存源的代理,並負責建立Session物件
  1. Session介面:Session介面負責執行被持久化物件的CRUD操作
  1. Transaction介面:Transaction介面負責事務相關的操作

 

         hibernate框架就是在利用這幾個介面來封裝了JDBC,而且我們用這些介面來運算元據庫變得非常簡單,減少了我們在持久層的程式碼量。

       從這個結構圖和我的一些分析就能發現hibernate框架是非常強大,而且它給我們開發人員的開發帶來了非常大的便利,尤其是他的設計思路還有它的“全自動”的對映物件模型和關係模型。

       但是hibernate框架也有它的一些缺點:

  1. 既然是封裝了JDBC,所以很明顯它沒有JDBC的效率高,尤其是在大量的處理表更新操作的時候。
  1. 它有侷限性,一個持久化類不能對映多個表
  2. 它應對大數量的時候顯得非常笨拙,這一點沒有JDBC和接下來要介紹的IBatis框架

 

       其實一項技術或者一個框架都有它的優缺點,選擇最合適的才是王道。

 

       這篇部落格主要是介紹了hibernate框架的結構和分析,闡述了hibernate框架的優缺點,【具體詳細使用要等到我的框架學習的後續文章】。總的來說hibernate框架在持久層的作用非常明顯,我們懂得了它的優缺點之後,才能做到我們是否是要選擇這個框架作為我們持久層開發的必須的技術支撐,所以這些我常用的框架結構和分析不單單是在介紹一些框架學習的巨集觀知識把控,更多的是在為將來做專案開發中選擇合適的技術支撐做鋪墊。

 

後續的部落格在不斷更新,希望這些部落格能夠對讀者的開發過程帶來幫助,當然如果讀者對我的部落格有什麼好的建議或者意見,請與我聯絡。聯絡方式見部落格側邊欄!

相關文章