Nhibernate 體系結構

2021-09-06 15:16:38 字數 1689 閱讀 9379

在專案中也有用到過nhibernate但對nhibernate的認識,也存留在會用的階段,從沒深入的學習過,決定對nhibernate做乙個系統的學習。

體系結構

上圖展示了nhibernate使用資料庫和配置檔案資料來為應用程式提供持久化服務(和持久化物件)。

兩種體系

輕型體系,應用程式自己提供ado.net連線,並且自行管理事務。這種方式使用了nhibernate api的乙個最小子集。

全面解決體系,對於應用程式來說,所有的底層ado.net api都被抽象了,所有的細節都讓nhibernate來做。

常用物件

sessionfactory(nhibernate.isessionfactory):對屬於單一資料庫的編譯過的對映嗯間的乙個執行緒安全的,不可變的快取快照。它是session的工廠,是connectioprovider的客戶。可以持有乙個可選的(第二級)資料快取,可以在程序級別或集群級別儲存可以在事務中重用的資料。

會話session(nhibernate.isession):單執行緒,生命期短促的物件,代表應用程式和持久化層之間的一次對話。封裝了乙個ado.net連線。也是transaction的工廠。儲存有必需的(第一級)持久化物件的快取,用於遍歷物件圖,或者通過識別符號查詢物件。

持久化物件(persistent)及其集合(collection):生命期短促的單執行緒物件,包含了持久化狀態和商業功能。它們可能是普通的物件,唯一特別的是他們現在從屬於且僅從屬於乙個session。一旦session被關閉,他們都將從session中取消聯絡,可以在任何程式層自由使用(比如,直接作為傳送到表現層的dto,資料傳輸物件)。

臨時物件(transient object)及其集合(collection):目前沒有從屬於乙個session的持久化類的例項。它們可能是剛剛被程式例項化,還沒來得及被持久化,或者是被乙個已經關閉的session所例項化的。

事務transaction(nhibernate.itransaction):(可選)單執行緒,生命期短促的物件,應用程式用它來表示一批工作的原子操作。是底層的ado.net事務的抽象。乙個session某些情況下可能跨越多個transaction事務。

connectionprovider(nhibernate.connectin.connectionprovider):(可選)ado.net連線的工廠,從底層的idbconnection抽象而來。對應用程式不可見,但可以被開發者擴充套件/實現。

transactionfactory(net.sf.hibernate.transactionfactory):(可選)事務例項的工廠,對應用程式不可見,但可以被開發者擴充套件/實現。

通過圖可以看出,輕型結構中沒有使用transaction/transactionfactory或connectionprovider api,直接和ado.net對話了。

學習orm和nhibernate概念,及nhibernate的結構。

參考《nhibernate中文文件》

mysql 體系結構 了解MySQL體系結構

mysql 資料庫體系結構圖 mysql 由以下幾部分組成 1 connectors 不同語言中與 sql 的互動 show variables like connection variable name value character set connection utf8 collation c...

簡述mysql體系結構 MySQL體系結構

一 mysql登入方式 一 tcp ip方式 遠端 本地 mysql uroot poldboy123 h 10.0.0.51 p3306 二 socket方式 mysql uroot poldboy123 s tmp mysql.sock 二 例項介紹 例項 mysqld後台守護程序 主線程 ma...

軟體體系結構 軟體體系結構概論

開學到現在我已經上了三節軟體體系結構的課程,現在我想把自己學到的整理歸納一下。此篇隨筆對應於教材軟體體系結構概論一章。首先談一談我剛接觸這門課程是的感受。那就是 我靠 軟體也會有體系結構?以前只學過資料結構 演算法 基本的程式語言,覺得程式設計無非就是使用者給我需求,我便按照需求來程式設計序就好,從...