NHibernate主要介面

2021-04-08 16:27:27 字數 2583 閱讀 7904

一、介面簡介

isession

isession是面向使用者的主要介面,主要用於物件持久化,資料載入等操作,支援資料庫事務,它隱藏了nhb內部複雜的實現細節,isession由isessionfactory建立。

isessionfactory

isessionfactory是nhb內部的核心類,它維護到持久機制(資料庫)的連線並對它們進行管理,同時還會儲存所有持久物件的對映資訊。

isessionfactory由configuration建立,因為建立isessionfactory的開銷非常大(需要載入對映資訊),所以這個物件一般使用singleton(單例)模式。

itransaction

itransaction是nhb的事務處理介面,它只是簡單的封裝了底層的資料庫事務。

事務必須由isession來啟動。

icriteria

icriteria是expression(表示式)資料載入介面,expression是乙個關係表示式組合,通過它能產生sql語句的where部分, 使用者需要通過isession來間接呼叫它。

iquery

iquery是hql資料載入介面,hql(hibernate query language)是nhb專用的物件導向的資料查詢語言,它與資料庫的sql有些類似,但功能更強大!同icriteria一樣,也需要通過isession來間接呼叫它。

二、isessionfactory介面

該介面與資料庫連線、資料庫事務等進行互動,還儲存著與所有持久物件關聯的持久化物件。持久化類是持久化的關鍵,它實現基本的crud操作。

當使用者需要持久操作時,由會話工廠建立乙個會話供使用者進行持久操作。

會話工廠由isessionfactory介面實現,由configuration的buildsessionfactory方法建立,會話工廠應該使用singleton模式。它是session的工廠,是connectionprovider的客戶。可以持有乙個可選的(第二級)資料快取,可以在程序級別或集群級別儲存的可以在事物中重用的資料。如果要訪問多個資料庫,應建立多個會話工廠。

isessionfactory介面並沒有提供與連線物件相關的操作,這些操作由isessionfactoryimplementor類實現。isessionfactoryimplementor繼承自isessionfactory,而會話工廠的實現類sessionfactoryimpl實現了這兩個介面。

三、icriteria介面

該介面用於操作表示式和排序字段,由criteriaimpl類實現。此類加有internal修飾,因此在程式中無法直接構造,必須通過isession.createcriteria(type)來獲得。

icriteria介面的一些方法:

setmaxresults:設定返回的最大結果數,可用於分頁;

setfirstresult:設定首個物件返回的位置,可用於分頁;

settimeout:設定操作的超時值,此值將傳遞給idbcommand物件;

add:加入條件表示式(expression物件),此方法可多次呼叫以組合多個條件;

addorder:加入排序的字段(order物件);

list:返回滿足條件的物件集合。

其中expression是乙個abstract(抽象)類,它通過一組static方法實現factory method(工廠方法)模式,這些static方法返回的都是expression類的子類,下面列出一些常用的:

eq:返回eqexpression,這是乙個相等判斷的表示式;

like:返回likeexpression,這是乙個like判斷的表示式;

gt:返回gtexpression,這是乙個大於判斷的表示式;

and:返回andexpression,這是兩個表示式and操作後的表示式;

or:返回orexpression,這是兩個表示式or操作後的表示式;

criteria資料載入的不足:

1. 當使用setfirstresult和setmaxresults限制返回的物件數時,無法得知物件的總數;

2. 當前版本不支援關聯查詢(hibernate好像可以);

四、iquery介面

該介面用來設定查詢語句、引數等,實現類為queryimpl,不能在nhb程式集外直接建立,只能通過session的createquery來取得乙個iquery介面。hql

是乙個十分強大的物件導向的查詢語言,不需要使用實際的表名和列名來查詢資料,而改用類名和屬性。

有兩種方式來執行

hql資料載入,一種是直接使用

isession

的find

方法,另一種是使用

iquery

介面。iquery

最終還是會呼叫

isession

的find

方法。iquery介面的一些方法:

setmaxresults:設定返回的最大結果數,可用於分頁;

setfirstresult:設定首個物件返回的位置,可用於分頁;

settimeout:設定操作的超時值,此值將傳遞給idbcommand物件;

enumerable:返回查詢的列舉物件;

list:返回查詢的物件集合;

setparameter:設定查詢語句中引數的值和型別。

LTE網路主要介面

介面 型別主要資訊 s1 mme 信令面1 上下文資訊 ip位址 ue能力等 2 使用者身份資訊 imsi或tmsi guti等 3 切換資訊 位置資訊 小區 tac等 4 e rab承載管理資訊 5 nas資訊 使用者附著 鑑權 尋呼 ta更新等 6 s1介面管理資訊 mme標識 負載均衡等 s1...

介面測試主要流程

介面測試是測試系統元件間介面的一種測試,是指連線各個系統的通道傳輸資料的測試,保證資料經過傳輸後,資料的一致性,那麼介面測試的重點主要是檢查資料的互動 傳遞 控制管理過程。1 引數的準確性 類似於文字輸入框的測試,格式和內容 2 引數的個數 多參 少參 3 多介面傳參的準確性 4 介面的安全性 新增...

LTE網路主要介面資訊

介面型別 包含主要資訊 uu信令面 使用者面1 rrc信令訊息 2 測量報告 3 廣播訊息 4 異常流程 x2信令面 使用者面1 inter enb 切換 2 enb直接交換無線質量測量資訊 s1 mme 信令面1 上下文資訊 ip位址 ue能力等 2 使用者身份資訊 imsi或tmsi guti等...