日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NHibernate重要概念的解释和说明

發布時間:2025/4/14 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NHibernate重要概念的解释和说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
NHibernate
是一個面向.NET環境的對象/關系數據庫映射工具。


對象/關系數據庫映射(object/relational mapping (ORM))
這個術語表示一種技術,用來把對象模型表示的對象映射到基于SQL的關系模型數據結構中去。?


ISession
是一個 持久化管理器, 我們通過ISession來從數據庫中存取表。


ISessionFactory
代表一個數據庫,并且使用一個XML配置文件(Web.config或者hibernate.cfg.xml)。?


Configuration實例
NHibernate通過對Configuration().Configure()的調用來裝載配置文件,并初始化成一個Configuration實例;通過Configuration實例創建一個ISessionFactory。


NHibernate體系結構
NHibernate使用數據庫和配置信息來為應用程序提供持久化服務(以及持久的對象)。


ITransaction (NHibernate.ITransaction)
(可選的)應用程序用來指定原子操作單元范圍的對象,它是單線程的,生命周期很短。


IConnectionProvider (NHibernate.Connection.IConnectionProvider)
(可選的)生成ADO.NET連接以及Command對象的工廠。 它通過抽象將應用從底層的IDbConnection或IDbCommand隔離開。 僅供開發者擴展/實現用,并不暴露給應用程序使用。?


IDriver (NHibernate.Driver.IDriver)
(可選的)一個封裝了不同ADO.NET providers之間的差異(利用參數命名轉換等ADO.NET支持的特性)的接口。?


ITransactionFactory (NHibernate.Transaction.ITransactionFactory)
(可選的)生成ITransaction對象實例的工廠。 僅供開發者擴展/實現用,并不暴露給應用程序使用。?


實例狀態
一個持久化類的實例可能處于三種不同狀態中的某一種。 這三種狀態的定義則與所謂的持久化上下文(persistence context)有關。 NHibernate的ISession對象就是這個所謂的持久化上下文。?


瞬態(transient)
該實例從未與任何持久化上下文關聯過。它沒有持久化標識(相當于主鍵值)。?


持久化(persistent)
實例目前與某個持久化上下文有關聯。 它擁有持久化標識(相當于主鍵值),并且可能在數據庫中有一個對應的行。 對于某一個特定的持久化上下文,NHibernate保證持久化標識與CLR標識(其值代表對象在內存中的位置)等價。?


脫管(detached)
實例曾經與某個持久化上下文發生過關聯,不過那個上下文被關閉了, 或者這個實例是被序列化(serialize)到另外的進程。 它擁有持久化標識,并且在數據庫中可能存在一個對應的行。 對于脫管狀態的實例,NHibernate不保證任何持久化標識和CLR標識的關系。?


可編程的配置方式
一個NHibernate.Cfg.Configuration實例代表了一個應用程序中.NET類型 到SQL數據庫映射的完整集合. Configuration被用來構建一個(不可變的 (immutable)) ISessionFactory. 映射定義則由不同的XML映射定義文件編譯而來。


外連接抓取(Outer Join Fetching)
如果你的數據庫支持ANSI, Oracle或Sybase風格的外連接, 外連接抓取通常能通過限制往返數據庫次數 (更多的工作交由數據庫自己來完成)來提高效率.?

日志
NHibernate使用Apache log4net來為各種事件記錄日志。?

XML配置文件
在hibernate.cfg.xml文件中指定一套完整的配置.?


持久化類(Persistent Classes)
在應用程序中,用來實現業務問題實體的(如,在電子商務應用程序中的Customer和Order) 類就是持久化類。


映射定義(Mapping declaration)
對象和關系數據庫之間的映射是用一個XML文檔(XML document)來定義的。


composite-id 聯合ID
如果表使用聯合主鍵,你可以把類的多個屬性組合成為標識符屬性。


鑒別器
在"一棵對象繼承樹對應一個表"的策略中,<discriminator>元素是必需的, 它定義了表的鑒別器字段。


property
<property>元素為類定義了一個持久化類的屬性。?


連接(join)
使用 <join> 元素,可以將一個類的屬性映射到多張表中。 當表之間存在一對一關系的時候使用。?


持久化集合類
NHibernate要求持久化集合值字段必須聲明為接口。


延遲加載
集合(不包括數組)是可以延遲初始化的,意思是僅僅當應用程序需要訪問時,才載入他們的值。


有序集合(Sorted collections)
NHibernate支持實現System.Collections.SortedList和Iesi.Collections.SortedSet 的集合。


雙向關聯(Bidirectional associations)
雙向關聯允許通過關聯的任一端訪問另外一端。在NHibernate中, 支持兩種類型的雙向關聯:?
一對多(one-to-many),多對多(many-to-many)


繼承映射(Inheritance Mappings)
NHibernate支持三種基本的繼承映射策略:?
每個類分層結構一張表(table per class hierarchy)單表繼承?
每個子類一張表(table per subclass)類表繼承?
每個具體類一張表(table per concrete class)具體表繼承?
此外,NHibernate還支持第四種稍有不同的多態映射策略:?
隱式多態(implicit polymorphism)?


加載對象
如果你已知某個持久化實例的標識符,ISession的Load()方法讓你取出它。


查詢
如果你不能確定你要尋找的對象的標示符,請使用ISession的Find() 方法。


元數據API
NHibernate中有一個非常豐富的元級別(meta-level)的模型,含有所有的實體和值類型數據的元數據。


事務和并發
NHibernate本身并不是數據庫,它只是一個輕量級的對象-關系數據庫映射(object-relational)工具。 它的事務交由底層的數據庫連接管理,如果數據庫連接有分布式事務的支持, 那么在 ISession 中進行的操作將是整個原子性分布式事務的一部分。NHibernate可以看作是添加了面向對象語義的ADO.NET瘦適配器(thin adapter)。?


攔截器與事件
應用程序能夠響應NHibernate內部產生的特定事件是非常有用的。這樣就允許實現某些通用的功能 以及允許對NHibernate功能進行擴展。?


HQL: NHibernate查詢語言
NHibernate配備了一種非常強大的查詢語言,這種語言看上去很像SQL。但是, HQL是非常有意識的被設計為完全面向對象的查詢,它可以理解如繼承、多態 和關聯之類的概念。


NHibernate 過濾器(filters)?
NHibernate 1.2新增了對某個類或者集合使用預先定義的過濾器條件(filter criteria)的功能。 過濾器條件相當于定義一個 非常類似于類和各種集合上的“where”屬性的約束子句,但是過濾器條件可以帶參數。 應用程序可以在運行時決定是否啟用給定的過濾器,以及使用什么樣的參數值。 過濾器的用法很像數據庫視圖,只不過是在應用程序中確定使用什么樣的參數的。


抓取策略
抓取策略(fetching strategy) 是指: 當應用程序需要在(NHibernate實體對象圖的)關聯關系間進行導航的時候, NHibernate如何獲取關聯對象的策略。


工具箱
通過NHibernate項目中提供的幾個命令行代碼生成工具(他們也被當作項目的一部分不斷得到維護),還有一些其他的第三方工具(MyGeneration, CodeSmith, ObjectMapper, AndroMDA)。?
NHibernate的主發行包中附帶了最重要的工具(甚至在NHibernate內部也可以快速調用這個工具):?
從映射文件到DDL schema的生成器(也就是SchemaExport, hbm2ddl)?
NHibernate項目直接提供的其他工具在一個單獨的發行包中發布,NHibernateContrib。這個發行包包含了下列任務的工具:?
使用映射文件生成C#代碼的hbm2net。?
使用.NET的attributes生成映射文件的NHibernate.Mapping.Attributes, 或者 NHMA for short)。?
NHibernate第三方支持工具包括:?
CodeSmith, MyGeneration, 以及 ObjectMapper (利用已有數據庫結構生成映射文件)?
AndroMDA (MDA (模型驅動架構) 利用UML以及他們的XML/XMI展示生成持久化類文件)

總結

以上是生活随笔為你收集整理的NHibernate重要概念的解释和说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。