天天看點

淺析SSH核心原理(二)

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

一、既然Hibernate是ORM的架構,說Hibernate,就不得不說ORM,那麼什麼是ORM?

對象-關系映射(Object/Relation Mapping,簡稱ORM),是随着面向對象的軟體開發方法發展而産生的,是一種為了解決面向對象與關系資料庫存在的互不比對的現象的技術,本質上就是将資料從一種形式轉換到另外一種形式。

在弄明白ORM之前,要先明白以下三個概念:

1、概念模型:在軟體分析階段建立,用來模拟問題域中每一個真實實體的概念和屬性,以及這些實體之間的關系。 2、域模型:在軟體設計階段建立,基于概念模型,域模型是面向對象的,由具有狀态和行為的域對象(實體的抽象,類)和域對象之間的關系(類間關系)組成。 3、關系資料模型:在概念模型的基礎上建立起來,描述關系資料的靜态結構。

由上面的概念,我們知道,域模型和關系資料模型分别建立在概念模型的基礎上,域模型是面向對象的,而關系資料模型是面向關系的,一般情況下,一個持久化類和一個表對應,類的每個執行個體對應表中的一條記錄。很顯然,兩種模型之間有許多不比對之處,如下圖:  

淺析SSH核心原理(二)

  ORM就是為了解決域模型和關系資料模型之間的不比對而産生的,是以叫對象-關系映射,ORM能在任何一個java應用的業務邏輯層和資料庫層之間充當橋梁,如下圖:  

淺析SSH核心原理(二)

  Hibernate就是一種ORM實作,說白了就是一個ORM中間件。

參考我的部落格上另外一個系列文章來看一下Hibernate是如何實作ORM的。

http://blog.csdn.net/shan9liang/article/details/8746961

二、Hibernate核心API  

淺析SSH核心原理(二)

  1、Configuration接口 Configuration類負責配置并啟動Hibernate,建立SessionFactory對象。在Hibernate的啟動的過程中,Configuration類的執行個體首先定位映射文檔位置、讀取配置,然後建立SessionFactory對象。

2、SessionFactory接口 一個SessionFactory執行個體對應一個資料源,并負責建立Session對象。這裡用到了工廠模式。需要注意的是SessionFactory并不是輕量級的,因為它需要很大的緩存存放預定義的Sql語句及映射中繼資料等,可以為SessionFactory配置一個緩存插件,即二級緩存。一般情況下,一個項目通常隻需要一個SessionFactory就夠,當需要操作多個資料庫時,可以為每個資料庫指定一個SessionFactory。SessionFactory是線程安全的。

3、Session接口 Session接口負責執行被持久化對象的CRUD操作。但需要注意的是Session對象是非線程安全的。Session也有一個緩存,成為一級緩存,緩存目前工作機關的資料。

4、Transaction接口 Transaction接口負責事務相關的操作,它對底層的事務接口做了封裝,使得應用可以通過一緻的Transaction接口聲明事務邊界,如下圖:  

淺析SSH核心原理(二)

  它是可選的,開發人員也可以設計編寫自己的底層事務處理代碼、

5、Query和Criteria接口 Query和Criteria接口負責執行各種資料庫查詢,Query執行個體包裝了一個HQL查詢語句,與普通Sql的差別是,HQL查詢語句是面向對象的。 Criteria接口完全封裝了基于字元串形式的查詢語句,比Query接口更加面向對象,Criteria接口擅長執行動态查詢。

Hibernate當然不僅僅這幾個核心接口,還有事件處理接口,當程式通過Hibernate來加載,儲存,更新或删除對象時,會觸發Hibernate的攔截器或事件監聽器做出相應的處理。

還有映射類型接口等等,不再過多介紹。

核心接口說完了,那麼這些接口經過怎樣的合作來完成一個Hibernate的基本執行流程呢?示意圖:  

淺析SSH核心原理(二)

  三、本篇總結

本篇主要介紹了ORM映射以及Hibernate核心API,并用活動圖表示了Hibernate一般操作的基本處理流程。

下篇繼續……  

繼續閱讀