NHibernate概括
? ?什么是?NHibernate?NHibernate是一個面向.NET環境的對象/關系數據庫映射工具。
對象/關系數據庫映射(object/relational mapping,ORM)這個術語表示一種技術,用來把對象模型表示的對象映射到基于SQL的關系模型數據結構中去。
什么是ORM?對象-關系映射(Object/Relation Mapping。簡稱ORM),是隨著面向對象的軟件開發方法發展而產生的。面向對象的開發方法是當今企業級應用開發環境中的主流開發方法。關系數據庫是企業級應用環境中永久存放數據的主流數據存儲系統。對象和關系數據是業務實體的兩種表現形式,業務實體在內存中表現為對象,在數據庫中表現為關系數據。內存中的對象之間存在關聯和繼承關系,而在數據庫中,關系數據無法直接表達多對多關聯和繼承關系。因此。對象-關系映射(ORM)系統一般以中間件的形式存在,主要實現程序對象到關系數據庫數據的映射。
面向對象是從軟件project基本原則(如耦合、聚合、封裝)的基礎上發展起來的,而關系數據庫則是從數學理論發展而來的。兩套理論存在顯著的差別。
為了解決這個不匹配的現象,對象關系映射技術應運而生。
NHiberante的優缺點
長處
(1).面向對象:NHiberante的使用時僅僅須要操縱對象。使開發更對象化,拋棄了數據庫中心的思想,全然的面向對象思想。
(2).透明持久化:帶有持久化狀態的、具有業務功能的單線程對象,此對象生存期非常短。這些對象可能是普通的POCO。這個對象沒有實現第三方框架或者接口,唯一特殊的是他們正與(只一個)Session相關聯。一旦這個Session被關閉,這些對象就會脫離持久化狀態。這樣就可被應用程序的不論什么層自由使用。
(比如,用作跟表示層打交道的傳輸數據對象。
)
(3).它沒有侵入性,即所謂的輕量級框架。
正由于它具有透明持久化的長處。它才沒有侵入性。才是一個輕量級框架。
恒定一個框架為重量級、還是輕量級,是依據其侵入性而定奪的。而NHibernate就是一個輕量級ORM框架。
(4).較好的移植性:支持多種數據庫。便于數據庫的遷移。
(5).緩存機制:提供一、二級緩存和查詢緩存。
(6).開發效率:眾所周知,使用NHibernate能夠簡化程序開發,從而達到高速開發的目的。作為軟件公司,項目管理的關鍵就是控制開發成本。正由于使用NHibernate后所寫的代碼量降低了,相對于原先使用“SqlHelper、DAL、BLL”開發程序的項目周期縮短了,成本就降低了。
?
缺點
(1).內存消耗:直接使用“SqlHelper、DAL、BLL”無疑是最省內存的。使用NHibernate后。內存開銷比較大。這點是毋庸置疑的。
(2).批量數據庫的處理:因為NHibernate是基于面向對象的ORM框架。處理數據庫的方式是針對單個對象的。
對數據庫的增、刪、改都是正對一條記錄而言。對于批量改動、刪除數據。不適合用NHiberante。這也是全部OR框架弱點。其原因,我覺得是在于與緩存機制的沖突。
(3).較多使用數據庫特性時。也不適合使用NHiberante。
如數據庫中大量的存儲過程、觸發器、特點的SQL語句。
(4).表關系比較混亂時也不適合使用NHiberante。
NHibernate僅僅適合于表與表的關系比較明白的環境中。
如本應該建立外鍵的。沒有建立外鍵。這時使用NHiberante不僅沒有降低工作量。反而添加了工作量。
(5).學習成本:相對于NHibernate來說,使用“SqlHelper、DAL、BLL”操作數據庫,學習成本比較低,并且上手非常快。使用NHibernate須要有一定OOP(面向對象編程)和OOD(面向對象設計)的基礎。這對于基礎薄弱的程序猿來說,從面向過程的編程到面向對象的編程。須要一定的投入;普通情況下須要學習1個月左右的時間才可以深入NHiberante。
總結
以上是生活随笔為你收集整理的NHibernate概括的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: quartz+spring框架动态调整频
- 下一篇: 重载与覆盖的差别