淺析SSH核心原理(二)
來源:互聯網
上載者:User
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、關係資料模型:在概念性模型的基礎上建立起來,描述關係資料的靜態結構。由上面的概念,我們知道,領域模型和關係資料模型分別建立在概念性模型的基礎上,領域模型是物件導向的,而關係資料模型是面向關係的,一般情況下,一個持久化類和一個表對應,類的每個執行個體對應表中的一條記錄。很顯然,兩種模型之間有許多不匹配之處,如: ORM就是為瞭解決領域模型和關係資料模型之間的不匹配而產生的,所以叫對象-關係映射,ORM能在任何一個java應用的商務邏輯層和資料庫層之間充當橋樑,如: Hibernate就是一種ORM實現,說白了就是一個ORM中介軟體。參考我的部落格上另外一個系列文章來看一下Hibernate是如何?ORM的。http://blog.csdn.net/shan9liang/article/details/8746961
二、Hibernate核心API
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介面聲明事務邊界,如: 它是可選的,開發人員也可以設計編寫自己的底層交易處理代碼、
5、Query和Criteria介面Query和Criteria介面負責執行各種資料庫查詢,Query執行個體封裝了一個HQL查詢語句,與普通Sql的區別是,HQL查詢語句是物件導向的。Criteria介面完全封裝了基於字串形式的查詢語句,比Query介面更加物件導向,Criteria介面擅長執行動態查詢。Hibernate當然不僅僅這幾個核心介面,還有事件處理介面,當程式通過Hibernate來載入,儲存,更新或刪除對象時,會觸發Hibernate的攔截器或事件監聽器做出相應的處理。還有映射類型介面等等,不再過多介紹。核心介面說完了,那麼這些介面經過怎樣的合作來完成一個Hibernate的基本執行流程呢?:
三、本篇總結本篇主要介紹了ORM映射以及Hibernate核心API,並用活動圖表示了Hibernate一般操作的基本處理流程。下篇繼續……