天天看點

Java程式員從笨鳥到菜鳥之(五十)細談Hibernate(一)hibernate基本概念和體系結構

資料庫操作是當今傳統應用軟體不可缺少的一部分,幾乎所用的應用性系統和互動性軟體都離不開資料庫的支援,是以對資料庫資料庫的操作也是一個必不可少的工作,在java的世界裡,傳統的資料庫通路就是jdbc資料庫通路,剛開始學習的時候應該還能滿足我們的需求,但真正在實際應用中,其繁瑣的操作,開發效率低效,代碼備援等不可避免的缺點也是大家有目共睹的,是以,一套高效簡便的資料庫通路架構在這種繁瑣工作中誕生了,這就是我們如今java世界裡風靡全球的Hibernate架構(這個應該不誇張吧),是以從今天開始,我和大家就一起進入hibernate的複習。

Hibernate百度名片:

Hibernate是一個開放源代碼的​​對象​​​關系映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以随心所欲的使用對象程式設計思維來操縱​​資料庫​​。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的用戶端程式使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。

從上邊百度名片中,我們可以看出:

1)         其實hibernate底層依然是jdbc實作的,隻不過jdbc的繁瑣操作都讓架構來替我們做了,程式員已經從繁瑣的jdbc操作中解脫出來了。

2)         Hibernate是一個對象關系映射模型,也就是說,它主要操作的是對象和關系之間的映射,對象,即為我們java中類的對象,隻不過類一般是一些實體類

3)         Hibernate不僅僅是在web上的應用架構,這是很多初學者的任務,認為hibernate隻是用在web開發中的。其實這是一個很錯誤的觀點

持久化:

       上面我們看出hibernate主要完成的是一個資料持久化的重任,很多人應該想了,這個,持久化是什麼啊?下面我們就來說一下這個持久化:持久化是将程式資料在持久狀态和瞬時狀态間轉換的一種機制,持久化的主要應用是将記憶體中的對象存儲在關系型的資料庫中,當然也可以存儲在磁盤檔案中、XML資料檔案中等等。

(1)瞬時狀态(transient)

儲存在記憶體中的資料。程式退出後,資料就消失了。

(2)持久狀态(Persisten)

      在一定周期内保持不變就是持久化,持久化是針對時間來說的. 資料庫中的資料就是持久化了的資料,隻要你不去删除或修改. 比如在IE浏覽器中一次Session會話中Session對象變量也是不變的,是Session容器中持久化 ,​​對象持久化​​的方式有很多種,根據周期不同有,page,Session,Application,

   hibernate為應用程式提供了高效的O/R關系映射和查詢服務,為面向對象的領域模型到傳統的關系型資料庫的映射,提供了一個使用友善的架構。他也是對對象持久化一個很好的實作。簡單示例一下:

Java程式員從笨鳥到菜鳥之(五十)細談Hibernate(一)hibernate基本概念和體系結構

對象關系映射

        從上邊我們可以看出,Hibernate是一個開放源代碼的​​對象​​​關系映射架構,對象/關系資料庫映射(object/relational mapping(ORM))這個術語表示一種技術,用來把對象模型表示的對象映射到基于SQL的關系模型資料庫結構中去。ORM,即Object- Relational Mapping(對象關系映射),它的作用是在關系型資料庫和業務實體對象之間作一個映射,這樣,我們在具體的操作業務對象的時候,就不需要再去和複雜的 SQL語句打交道,隻要像平時操作對象一樣操作它就可以了。 對象關系映射(ORM)提供了概念性的、易于了解的模型化資料的方法。ORM方法論應當基于三個核心原則: 

        簡單:以最基本的形式模組化資料。 

        傳達性:資料庫結構被任何人都能了解的語言文檔化。 

        精确性:基于資料模型建立正确标準化了的結構。 

下面我們就一起來認識一下hibernate,Hibernate能做什麼?

Hibernate能幫助我們利用面向對象的思想,開發基于關系型資料庫的應用程式

第一:将對象資料儲存到資料庫

第二:将資料庫資料讀入對象中

Hibernate體系結構:

一個非常簡要的Hibernate體系結構的概要圖:

Java程式員從笨鳥到菜鳥之(五十)細談Hibernate(一)hibernate基本概念和體系結構

從這個圖可以看出,Hibernate使用資料庫和配置資訊來為應用程式提供持久化服務(以及持久的對象)。

我們來更詳細地看一下Hibernate運作時體系結構。由于Hibernate非常靈活,且支援多種應用方案,是以我們這隻描述一下兩種極端的情況。“輕型”的體系結構方案,要求應用程式提供自己的JDBC 連接配接并管理自己的事務。這種方案使用了Hibernate API的最小子集:

Java程式員從笨鳥到菜鳥之(五十)細談Hibernate(一)hibernate基本概念和體系結構

“全面解決”的體系結構方案,将應用層從底層的JDBC/JTA API中抽象出來,而讓Hibernate來處理這些細節。