Hibernate基礎之核心介面

2021-06-19 00:39:13 字數 2455 閱讀 3311

hibernate有很多值得學習的地方,這裡主要介紹hibernate核心介面,包括介紹sessionfactory介面、query和criteria介面等方面。

session 介面

對於hibernate開發人員來說是乙個最重要的介面。然而在hibernate中,例項化的session是乙個輕量級的類,建立和銷毀它都不會占用很多資源。這在實際專案中確實很重要,因為在客戶程式中,可能會不斷地建立以及銷毀session 物件,如果session 的開銷太大,會給系統帶來不良影響。但值得注意的是session 物件是非執行緒安全的,因此在的設計中,最好是乙個 執行緒只建立乙個session物件。 在hibernate的設計者的頭腦中,他們將session看作介於資料連線與事務管理一種中間介面。

可以將session想象成乙個持久物件的緩衝區,hibernate能檢測到這些持久物件的改變,並及時重新整理資料庫。有時也稱session是乙個持久層管理器,因為它包含這一些持久層相關的操作, 諸如儲存持久物件至資料庫,以及從資料庫從獲得它們。請注意,hibernate的session不同於jsp 應用中的httpsession。當使用session這個術語時,指的hibernate中的session,而以後會將httpsesion 物件稱為使用者session。

sessionfactory介面

這裡用到了乙個設計模式――工廠模式,使用者程式從工廠類sessionfactory中取得session 的 例項。令感到奇怪的是sessionfactory並不是輕量級的!實際上它的設計者的意圖是讓它能在整個應用中共享。典型地來說,乙個專案通常只需要乙個sessionfactory就夠了,但是當的專案要操作多個資料庫時,那必須為每個資料庫指定乙個sessionfactory。 sessionfactory在hibernate中實際起到了乙個緩衝區的作用,它緩衝了hibernate自動生成的sql 語句和一些其它的對映資料,還緩衝了一些將來有可能重複利用的資料。

configuration介面

configuration介面的作用是對hibernate進行配置,以及對它進行啟動。在hibernate的啟動 過程中,configuration 類的例項首先定位對映文件的位置,讀取這些配置,然後建立乙個 sessionfactory物件。 雖然configuration 介面在整個hibernate專案中只扮演著乙個很小的角色,但它是啟動hibernate時所遇到的每乙個物件。

transaction 介面

transaction 介面是乙個可選的api,可以選擇不使用這個介面,取而代之的是hibernate的設計者自己寫的底層事務處理**。 transaction 介面是對實際事務實現的乙個抽象,這些實現包 括jdbc的事務、jta 中的usertransaction、甚至可以是corba 事務。之所以這樣設計是能讓開發者能夠使用乙個統一事務的操作介面,使得自己的專案可以在不同的環境和容器之間方便地移值。

query和criteria介面

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為以上所列的機制分別建立了乙個預設的實現,因此如果只是要增強它的某個策略 的功能的話,只需簡單地繼承這個類就可以了,沒有必要從頭開始寫**。以上介紹hibernate核心介面。

Hibernate征途(二)之基礎與核心

根據我司優良傳統,必然要由上向下 逐級深入,所以在鑽到hibernate細節之前,先從巨集觀上行欣賞一下hibernate。為什麼說是欣賞?大家可以自行查閱一下hibernate知識外的資訊,創始人和hibernate的 都挺有意思。單純地說乙個框架的優缺點沒什麼用處,但是當結合使用時,知道其優缺點...

Hibernate核心介面

hibernate的核心介面一共有6個,分別為 session sessionfactory transaction query criteria和configuration。這6個核心介面在任何開發中都會用到。通過這些介面,不僅可以對持久化物件進行訪問,還能夠進行事務控制。下面對這6個核心介面分別...

Hibernate核心物件

configuration 類負責管理hibernate的配置資訊。它包括如下內容 hibernate執行的底層資訊 資料庫的url 使用者名稱 密碼 jdbc驅動類,資料庫dialect,資料庫連線池等。hibernate對映檔案 hbm.xml hibernate配置的兩種方法 屬性檔案 hib...