天天看點

Hibernate3.6.2 核心接口

使用Hibernate 架構之前,首先需要我們對Hibernate 的核心接口,其核心接口一共有5 個,分别是Session 、SessionFactory 、Transaction 、Query 和Configuration 。在5 個接口中在一般的項目開發中都會使用到,通過這些接口可以對持久化對象進行存取,事務的控制等。下面分别對這個5 個接口進行介紹:

一、Session 接口:

    Session 接口對于Hibernate 開發人員來說是一個重要的接口,在Hibernate 中,執行個體化的Session 是一個輕量級的類,建立和銷毀它都不占用很多資源,這在項目開發中确實很重要,因為在客戶程式中,可能會不斷地建立以及銷毀Session 對象,如果Session 的開銷太大,會給系統帶來不良影響。但值得注意的是Session 對象是非線程安全的,是以在你的設計中,最好是一個線程隻建立一個Session 對象。

    Session 可以看作是介于資料連接配接與事務管理的一種中間接口,我們可以将Session 想象成一個持久化對象的緩沖區,Hibernate 能檢測到這些持久化對象的改變,并及時重新整理資料庫。我們也可以稱Session 是一個持久層管理器,因為它包含一些持久層相關的操作,如存儲持久對象到資料庫,以及從資料庫擷取等等。

二、SessionFactory 接口:

    通過這個接口我們可以看到Hibernate 用到的一個設計模式- 工廠設計模式,使用者從工廠類SessionFactory 中取得Session 的執行個體。

    Configuration 的執行個體會根據目前的配置資訊,構造SessionFactory 執行個體。

    這裡需要注意的是SessionFactory 并不是輕量級的!其設計目的是讓它能在整個應用共享,換句話說,一個項目通常隻需要一個SessionFactory 就夠了,但是當你的項目要操作多個資料庫時,那你就必須為每個資料庫指定一個SessionFactory 。

SessionFactory 是線程安全的。

    SessionFactory 在Hibernate 中實際起到一個緩沖區的作用,它緩沖了Hibernate 自動生成的SQL 語句和一些其他的映射資料,還緩沖了一些将來有可能重複利用的資料。

三、Configuration 接口:

    Configuration 接口的作用是對Hibernate 進行配置,以及對它進行啟動,在Hibernate 的啟動過程中,Configuration 類的執行個體首先定位映射文檔的位置,讀取這些配置,然後建立一個SessionFactory 對象。

    Configuration 管理Hibernate 的配置資訊都是從配置檔案hibernate.cfg.xml 或者Hibernate.properties 讀取的,當然也可以自定義檔案名稱,隻要在執行個體化Configuration 的時候指定具體的路徑就可以了。

雖然Configuration 接口在整個Hibernate 項目中隻扮演着一個很小的角色,但它是啟動hibernate 時你所遇到的每一個對象。

四、Transaction 接口:

Transaction 接口是一個可選的API ,你可以選擇不使用這個接口,取而代之的是Hibernate 的設計者自己寫的底層事務處理代碼。 Transaction 接口是對實際事務實作的一個抽象,這些實作包括JDBC 的事務、JTA 中的UserTransaction 、甚至可以是CORBA 事務。之是以這樣設計是能讓開發者能夠使用一個統一事務的操作界面,使得自己的項目可以在不同的環境和容器之間友善地移值。

五、Query 和Criterial 接口:

Query 接口讓你友善地對資料庫及持久對象進行查詢,它可以有兩種表達方式:HQL 語言或本地資料庫的SQL 語句。Query 經常被用來綁定查詢參數、限制查詢記錄數量,并最終執行查詢操作。

Criteria 接口與Query 接口非常類似,它允許你建立并執行面向對象的标準化查詢。

需要注意的是Query 接口也是輕量級的,它不能在Session 之外使用。

其他接口:

Callback 接口:

    當一些有用的事件發生時――例如持久對象的載入、存儲、删除時,Callback 接口會通知Hibernate 去接收一個通知消息。一般而言,Callback 接口在使用者程式中并不是必須的,但你要在你的項目中建立審計日志時,你可能會用到它。

政策接口:

Hibernate 與某些其它開源軟體不同的還有一點――高度的可擴充性,這通過它的内置政策機制來實作。當你感覺到Hibernate 的某些功能不足,或者有某些缺陷時,你可以開發一個自己的政策來替換它,而你所要做的僅僅隻是繼承它的某個政策接口,然後實作你的新政策就可以了,以下是它的政策接口:

·  主鍵的生成 (IdentifierGenerator 接口)

·  本地SQL 語言支援 (Dialect 抽象類)

·  緩沖機制 (Cache 和CacheProvider 接口)

·  JDBC 連接配接管理 (ConnectionProvider 接口)

·  事務管理 (TransactionFactory, Transaction, 和 TransactionManagerLookup 接口)

·  ORM 政策 (ClassPersister 接口)

·  屬性通路政策 (PropertyAccessor 接口)

·  代理對象的建立 (ProxyFactory 接口)

Hibernate 為以上所列的機制分别建立了一個預設的實作,是以如果你隻是要增強它的某個政策的功能的話,隻需簡單地繼承這個類就可以了,沒有必要從頭開始寫代碼。