【转】NHibernate入门教程
生活随笔
收集整理的這篇文章主要介紹了
【转】NHibernate入门教程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
開源框架完美組合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文雙語言小型企業(yè)網(wǎng)站Demo 摘要: 熱衷于開源框架探索的我發(fā)現(xiàn)ASP.NET MVC與jQuery easyUI的組合很給力。由于原先一直受Ext JS框架的licence所苦惱,于是痛下決心尋找一個完全免費(fèi)的js框架——easyUI。它有完整的demo和強(qiáng)大AIP手冊,使我在開發(fā)過程中得心應(yīng)手。以下是這篇博文Demo程序的演示效果: 解決方案如圖1所示圖1 Domain:領(lǐng)域模型 Dao:持久層 Service:服務(wù)層 ...閱讀全文 posted @?2011-08-19 01:53?劉冬.NET 閱讀(40176) |?評論 (150)?編輯 NHibernate從入門到精通系列(10)——多對多關(guān)聯(lián)映射 摘要: 內(nèi)容摘要 單向多對多關(guān)聯(lián)映射 雙向多對多關(guān)聯(lián)映射 一、單向多對多關(guān)聯(lián)映射 1.1 多對多關(guān)聯(lián)映射描述 眾所周知,持久化類的有三種對應(yīng)關(guān)系:“一對一”、“一對多(多對一)”和“多對多”。在項(xiàng)目開發(fā)過程中,我們接觸過權(quán)限系統(tǒng)。而權(quán)限系統(tǒng)中,“用戶”和“角色”的對應(yīng)關(guān)系往往就是“多對多”。 讓我們看一下“多對多”的數(shù)據(jù),如圖1.1.1所示:圖1.1.1 從數(shù)據(jù)中,我們能夠觀察到:多個用戶(User)對應(yīng)多個角色(Role)。構(gòu)造“多對多”的關(guān)聯(lián)關(guān)系,我們不僅需要用戶(User)表和角色(Role)表,還需要用戶和角色的關(guān)系表。通過這三張表的關(guān)系構(gòu)造了“多對多”的關(guān)聯(lián)關(guān)系。 讓我們看一下代碼: pu.閱讀全文 posted @?2011-03-04 00:26?劉冬.NET 閱讀(8042) |?評論 (32)?編輯 NHibernate從入門到精通系列(9)——一對多關(guān)聯(lián)映射 摘要: 內(nèi)容摘要 單向關(guān)聯(lián)映射 雙向關(guān)聯(lián)映射 一、單向關(guān)聯(lián)映射 1.1 單向關(guān)聯(lián)映射的描述 讓我們回顧一下之前講的《多對一關(guān)聯(lián)映射》,如圖1.1.1所示,其實(shí)“一對多”關(guān)聯(lián)映射就是“多對一”關(guān)聯(lián)映射相反的映射。 圖1.1.1 至于“一對多”單向關(guān)聯(lián)映射的代碼如下:publicclassStudent{publicvirtualint?ID{get;set;}publicvirtualstringName{get;set;}}publicclassClass{publicvirtualint?ID{get;set;}publicvirtualstringName{get;set;}publicvirt.閱讀全文 posted @?2011-03-03 15:36?劉冬.NET 閱讀(6675) |?評論 (7)?編輯 NHibernate從入門到精通系列(8)——一對一關(guān)聯(lián)映射 摘要: 內(nèi)容摘要 單向主鍵關(guān)聯(lián)映射 雙向主鍵關(guān)聯(lián)映射 唯一外鍵關(guān)聯(lián)映射 NHibernate的一對一關(guān)聯(lián)映射有三種,單向主鍵關(guān)聯(lián)映射、雙向主鍵關(guān)聯(lián)映射、唯一外鍵關(guān)聯(lián)映射。 一、單向主鍵關(guān)聯(lián)映射 我們模擬一個現(xiàn)實(shí)情況:學(xué)生(Student)和家庭(Family)的關(guān)系。在中國,目前實(shí)行計劃生育,一個家庭只有一個孩子,孩子上學(xué)后就成為了學(xué)生。學(xué)生和家庭的關(guān)系可以認(rèn)為是一對一的。 讓我們看一下“一對一”的表結(jié)構(gòu),如圖1.1所示:圖1.1 讓我們看一下“一對一”的實(shí)體類和映射文件: publicclassStudent{publicvirtualint?ID{get;set;}publicvirtualst.閱讀全文 posted @?2011-02-25 01:02?劉冬.NET 閱讀(8068) |?評論 (21)?編輯 NHibernate從入門到精通系列(7)——多對一關(guān)聯(lián)映射 摘要: 內(nèi)容摘要 多對一關(guān)聯(lián)映射概括 多對一關(guān)聯(lián)映射插入和查詢 多對一關(guān)聯(lián)映配置介紹 一、多對一關(guān)聯(lián)映射概括 關(guān)聯(lián)關(guān)系是實(shí)體類與實(shí)體類之間的結(jié)構(gòu)關(guān)系,分別為“多對一”、“一對一”、“多對多”。然而“多對一”是怎樣描述的呢?讓我們參考圖1.1所示: 圖1.1 學(xué)生表“T_Student”有兩條記錄,它們分別對應(yīng)了班級表“T_Class”的主鍵值為“1”的同一條記錄。所以這就是“多對一”的使用情景。 讓我們看一下“多對一”持久化類的結(jié)構(gòu): publicclassClass{publicvirtualint?ID{get;set;}publicvirtualstringName{get;set;}}pub.閱讀全文 posted @?2011-02-24 11:12?劉冬.NET 閱讀(7974) |?評論 (18)?編輯 NHibernate從入門到精通系列(6)——基本映射 摘要: 內(nèi)容摘要 映射定義概括 基本映射常用標(biāo)簽 NHibernate的類型 一、映射定義概括 1.1 映射定義(Mapping declaration) 對象和關(guān)系數(shù)據(jù)庫之間的映射是用一個XML文檔(XML document)來定義的。這個映射文檔被設(shè)計為易讀的,并且可以手工修改。映射語言是以對象為中心的, 意味著映射是按照持久化類的定義來創(chuàng)建的,而非表的定義。 讓我們打開上節(jié)課的映射例子: Product.hbm.xml Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlight.閱讀全文 posted @?2011-02-24 00:21?劉冬.NET 閱讀(7725) |?評論 (14)?編輯 NHibernate從入門到精通系列(5)——持久對象的生命周期(下) 摘要: 內(nèi)容摘要 持久化類 持久化生命周期中的回調(diào) 合法性驗(yàn)證回調(diào) 一、持久化類(Persistent Classes) 1.1 什么是持久化類 回答這個問題之前先回答什么是持久化。所謂的持久化就是把數(shù)據(jù)(如內(nèi)存中的對象)保存到可永久保存的存儲設(shè)備中(如磁盤)。然而持久化類就是持久化數(shù)據(jù)的載體,在應(yīng)用程序中,用來實(shí)現(xiàn)業(yè)務(wù)問題實(shí)體的(如,在電子商務(wù)應(yīng)用程序中的Customer和Order) 類就是持久化類。不能認(rèn)為所有的持久化類的實(shí)例都是持久的狀態(tài)——一個實(shí)例的狀態(tài)也可能 是瞬時的或脫管的。 如果這些持久化類遵循一些簡單的規(guī)則,NHiberna閱讀全文 posted @?2011-02-18 02:30?劉冬.NET 閱讀(6670) |?評論 (21)?編輯 NHibernate從入門到精通系列(4)——持久對象的生命周期(上) 摘要: 內(nèi)容摘要 持久對象的狀態(tài)的概念 持久對象的狀態(tài)Demo 一、持久對象的狀態(tài)的概念 在NHibernate中有三種狀態(tài),對它的深入理解,才能更好的理解NHibernate的運(yùn)行機(jī)理,剛開始不太注意這些概念,后來發(fā)現(xiàn)它是重要的。對于NHibernate和SQL的關(guān)系有更好的理解;對于理解需要持久化的.NET對象,在它的生命周期中三種狀態(tài)之間的互相轉(zhuǎn)化有很大幫助。如圖1.1所示圖1....閱讀全文 posted @?2011-02-17 01:18?劉冬.NET 閱讀(8774) |?評論 (27)?編輯 NHibernate從入門到精通系列(3)——第一個NHibernate應(yīng)用程序 摘要: 內(nèi)容摘要 準(zhǔn)備工作 開發(fā)流程 程序開發(fā) 一、準(zhǔn)備工作 1.1開發(fā)環(huán)境 開發(fā)工具:VS2008以上,我使用的是VS2010 數(shù)據(jù)庫:任意關(guān)系型數(shù)據(jù)庫,我使用的是SQL Server 2005 Express 1.2測試環(huán)境 nunit 2.5.7 二、開發(fā)流程 NHibernate程序的開發(fā)流程是: (1).編寫領(lǐng)域類與映射文...閱讀全文 posted @?2011-02-16 00:21?劉冬.NET 閱讀(15940) |?評論 (68)?編輯 NHibernate從入門到精通系列(2)——NHibernate環(huán)境與結(jié)構(gòu)體系 摘要: 內(nèi)容摘要 NHibernate的開發(fā)環(huán)境 NHibernate的結(jié)構(gòu)體系 NHibernate的配置 一、NHibernate的開發(fā)環(huán)境 NHibernate的英文官方網(wǎng)站為:http://nhforge.org/ NHibernate目前最新的版本是3.0.0.GA,其下載地址是:http://sourceforge.net/projects/nhibernate/f...閱讀全文 posted @?2011-02-15 00:23?劉冬.NET 閱讀(12115) |?評論 (13)?編輯 NHibernate從入門到精通系列(1)——NHibernate概括 摘要: 內(nèi)容摘要 NHibernate簡介 ORM簡介 NHibernate優(yōu)缺點(diǎn) 一、NHibernate簡介 什么是?NHibernate?NHibernate是一個面向.NET環(huán)境的對象/關(guān)系數(shù)據(jù)庫映射工具。對象/關(guān)系數(shù)據(jù)庫映射(object/relational mapping,ORM)這個術(shù)語表示一種技術(shù),用來把對象模型表示的對象映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去。...閱讀全文 posted @?2011-02-14 02:04?劉冬.NET 閱讀(15313) |?評論 (26)?編輯 Spring.NET企業(yè)架構(gòu)實(shí)踐之 NHibernate + Spring.NET + WCF + Windows服務(wù) + Silverlight 中小企業(yè)應(yīng)用架構(gòu)完整Demo 摘要: 最近由于工作忙的原因,博客更新的比較慢,在此給園子里的朋友說聲抱歉。于是,我利用周末的時間寫了一份Spring.NET架構(gòu)的綜合應(yīng)用,希望這樣的實(shí)用型架構(gòu)能受到大家的歡迎。 一、概括 此Demo使用的開發(fā)工具是:VS2010,數(shù)據(jù)庫任意,Silvelright版本是4.0。Demo分為三層(Tier),數(shù)據(jù)庫,服務(wù)器端,客戶端。其中,服務(wù)器端又分為三層(Layer),持久層,服務(wù)層,門面層。WCF以Windows服務(wù)作為宿主,客戶端使用Silverlight運(yùn)行瀏覽器之外。圖1 圖1是解決方案中包含的項(xiàng)目。其中,Server文件夾下是服務(wù)器端的代碼,Host文件夾下是服務(wù)器端的Windo閱讀全文 posted @?2010-10-16 14:03?劉冬.NET 閱讀(16567) |?評論 (57)?編輯 Spring.NET實(shí)用技巧5——WCF環(huán)境下的NHibernate分布式事務(wù) 摘要: 之前實(shí)現(xiàn)的NHibernate分布式事務(wù),在WCF環(huán)境下遇到的一個難點(diǎn),是NHibernate的Session管理。然而在我查看log4net生成的調(diào)試日志時候驚奇的發(fā)現(xiàn),原來NHibernate的Session不一定需要SessionScope來管理。在遇到事務(wù)的時候能自動創(chuàng)建一個Session,在事務(wù)關(guān)閉的時候能自動關(guān)閉Session。SessionScope僅僅是把自動創(chuàng)建的Session合...閱讀全文 posted @?2010-08-12 13:45?劉冬.NET 閱讀(4680) |?評論 (10)?編輯 Spring.NET實(shí)用技巧4——NHibernate分布式事務(wù)(下) 摘要: 上篇,我們已實(shí)現(xiàn)了在同一應(yīng)用程序下的分布式事務(wù)——即多Dao層+同Service層,每個Dao對應(yīng)一個數(shù)據(jù)庫,一個Service調(diào)用多個Dao。但是在一些特定的子系統(tǒng)較多的項(xiàng)目中,開發(fā)人員是無法訪問到某個子系統(tǒng)的數(shù)據(jù)庫,這就意味著不能通過增加Dao層來實(shí)現(xiàn)分布式事務(wù)。正如一個銀行的軟件系統(tǒng),記錄了客戶的賬戶信息和存款金額,北京的分公司和上海的分公司分別有自己的數(shù)據(jù)庫和軟件系...閱讀全文 posted @?2010-07-30 14:44?劉冬.NET 閱讀(4022) |?評論 (8)?編輯 Spring.NET實(shí)用技巧3——NHibernate分布式事務(wù)(上) 摘要: 在使用NHibernate作為持久層框架時,多數(shù)據(jù)庫操作是一個比較難解決的問題。并且很多網(wǎng)友在給我發(fā)的eamil中經(jīng)常談到此問題。由于NHibernate是一種框架,不能像ADO.NET那樣直接用SQL語句操作數(shù)據(jù)庫,在動態(tài)改變DbConnection時比較麻煩,而且NHibernate目前并不完全支持多數(shù)據(jù)庫,所以實(shí)現(xiàn)多數(shù)據(jù)庫的操作是個棘手的問題?! 』叵胍幌?#xff0c;在使用ADO.NET實(shí)現(xiàn)多數(shù)據(jù)庫的...閱讀全文 posted @?2010-07-29 03:09?劉冬.NET 閱讀(5514) |?評論 (16)?編輯 Spring.NET企業(yè)架構(gòu)實(shí)踐之 Nhibernate + WCF + ASP.NET MVC + NVelocity 對PetShop4.0重構(gòu)(三)——持久層 摘要: 什么是持久層?先解釋什么是持久,英文persistence,將內(nèi)存中的數(shù)據(jù)固化,保持在物理儲存設(shè)備中。然而在企業(yè)應(yīng)用中,往往通過關(guān)系型數(shù)據(jù)庫來完成這一過程。那么持久層的定義是:相對于三層架構(gòu)中的表示層、業(yè)務(wù)層而言,專門負(fù)責(zé)持久化數(shù)據(jù)的獨(dú)立領(lǐng)域。設(shè)計模式中的“單一職責(zé)”原則確定了分層的目的,說白了,持久層就是專門與數(shù)據(jù)庫打交道的。如圖1所示圖1 在PetShop4.0中的D...閱讀全文 posted @?2010-06-19 22:08?劉冬.NET 閱讀(6271) |?評論 (15)?編輯 Spring.NET企業(yè)架構(gòu)實(shí)踐之 Nhibernate + WCF + ASP.NET MVC + NVelocity 對PetShop4.0重構(gòu)(二)——領(lǐng)域模型 摘要: 什么是領(lǐng)域模型?領(lǐng)域模型是對領(lǐng)域內(nèi)的概念類或現(xiàn)實(shí)世界中對象的可視化表示。又稱概念模型、領(lǐng)域?qū)ο竽P?、分析對象模型。它專注于分析問題領(lǐng)域本身,發(fā)掘重要的業(yè)務(wù)領(lǐng)域概念,并建立業(yè)務(wù)領(lǐng)域概念之間的關(guān)系。 當(dāng)我們不再對一個新系統(tǒng)進(jìn)行數(shù)據(jù)庫提煉時,取而代之的時面向?qū)ο蟮哪P吞釤?。我們必須大刀闊斧地對業(yè)務(wù)領(lǐng)域進(jìn)行細(xì)分,將一個復(fù)雜的業(yè)務(wù)領(lǐng)域劃分為多個小的子領(lǐng)域,同時還必須分清重點(diǎn)和次要部分,抓住核心領(lǐng)域概念,實(shí)...閱讀全文 posted @?2010-06-18 01:41?劉冬.NET 閱讀(5986) |?評論 (10)?編輯 Spring.NET企業(yè)架構(gòu)實(shí)踐之 Nhibernate + WCF + ASP.NET MVC + NVelocity 對PetShop4.0重構(gòu)(一)——架構(gòu)設(shè)計 摘要: PetShop4.0是微軟針對.NET企業(yè)系統(tǒng)推出的一個范例。業(yè)界有許多.NET與J2EE之爭,許多數(shù)據(jù)是從微軟的PetShop和Sun的PetStore而來。這種爭論不可避免帶有濃厚的商業(yè)色彩,對于我們開發(fā)人員而言,沒有必要過多關(guān)注。然而PetShop隨著版本的不斷更新,至現(xiàn)在基于.Net 2.0的PetShop4.0為止,整個設(shè)計逐漸變得成熟而優(yōu)雅,而且有很多可以借鑒之處。PetShop是一個...閱讀全文 posted @?2010-06-17 12:42?劉冬.NET 閱讀(11204) |?評論 (49)?編輯 Spring.NET實(shí)用技巧2——NHibernate訪問Oracle數(shù)據(jù)庫 摘要: 針對大型系統(tǒng),往往采用Oracle數(shù)據(jù)庫。這是因?yàn)樵诖髷?shù)據(jù)量的情況下Oracle的優(yōu)勢比較明顯,而且能夠部署到非Windows環(huán)境下,從而彌補(bǔ).NET程序跨平臺的缺點(diǎn)。但是使用NHibernate訪問Oracle和訪問SQL Server相比來說要略微復(fù)雜?! ≡谑褂肗Hibernate訪問Oracle的過程中,我們需要以下幾個步驟: 1.下載并安裝Oracle客戶端http://www.ora...閱讀全文 posted @?2010-05-25 21:21?劉冬.NET 閱讀(6252) |?評論 (15)?編輯 Spring.NET實(shí)用技巧1——基于Prevalence下的NHibernate二級緩存使用技巧 摘要: 什么是二級緩存? NHibernate的Session提供了一級緩存。每個Session,對同一個id進(jìn)行兩次Load,不會發(fā)送兩條SQL語句給數(shù)據(jù)庫,但是Session一但關(guān)閉,一級緩存也就失效了。 與Session相對的是,SessionFactory也提供了相應(yīng)的緩存機(jī)制?! essionFactory緩存可以依據(jù)功能和目的的不同而劃分為內(nèi)置緩存和外置緩存?! essionFact...閱讀全文 posted @?2010-05-19 03:46?劉冬.NET 閱讀(3205) |?評論 (9)?編輯 Spring.NET學(xué)習(xí)筆記——目錄(原) 摘要: 目錄 前言 Spring.NET學(xué)習(xí)筆記——前言 第一階段:控制反轉(zhuǎn)與依賴注入IoC&DI Spring.NET學(xué)習(xí)筆記1——控制反轉(zhuǎn)(基礎(chǔ)篇) Level 200 Spring.NET學(xué)習(xí)筆記2——環(huán)境搭建(基礎(chǔ)篇) Level 200 Spring.NET學(xué)習(xí)筆記3——實(shí)現(xiàn)一...閱讀全文 posted @?2009-11-20 12:36?劉冬.NET 閱讀(41762) |?評論 (43)?編輯 Spring.NET學(xué)習(xí)筆記19——整合NHibernate和ASP.NET MVC(基礎(chǔ)篇) Level 300 摘要: ASP.NET MVC Framework是微軟官方提供的MVC模式編寫ASP.NET Web應(yīng)用程序的一個框架。MVC(Model-View-Controller)用于表示一種軟件架構(gòu)模式.它把軟件系統(tǒng)分為三個基本部分:模型(Model),視圖(View)和控制器(Controller)。 今天帶給大家的就是期待以久的ASP.NET MVC與Spring.NET和NHibernate的組合,視...閱讀全文 posted @?2009-11-19 05:09?劉冬.NET 閱讀(9923) |?評論 (43)?編輯 Spring.NET學(xué)習(xí)筆記18——整合NHibernate(基礎(chǔ)篇) Level 300 摘要: NHibernate是一個基于.Net的針對關(guān)系型數(shù)據(jù)庫的對象持久化(ORM)類庫。NHibernate來源于非常優(yōu)秀的基于Java的NHibernate關(guān)系型持久化工具。從數(shù)據(jù)庫底NHibernate來持久化你的.Net 對象到關(guān)系型數(shù)據(jù)庫。NHibernate為你處理這些,遠(yuǎn)勝于你不得不寫SQL去從數(shù)據(jù)庫存取對象。你的代碼僅僅和對象關(guān)聯(lián),NHibernate自動產(chǎn)生SQL語句,并確保對象提交到...閱讀全文 posted @?2009-11-18 04:36?劉冬.NET 閱讀(15565) |?評論 (39)?編輯 Spring.NET企業(yè)架構(gòu)實(shí)踐之 JQuery + FlexiGrid + ASP.NET MVC + NVelocity + WCF + LINQ + NHibernate 綜合應(yīng)用 摘要: 今晚看了幾篇項(xiàng)目應(yīng)用的博客感受很深,晚上怎么都睡不著覺。于是乎,下面的博客誕生了 ^-^。 我在想是不是要把我熟悉的Spring.NET框架與別的框架或技術(shù)結(jié)合起來。由于心血來潮,斗膽在園子里這么多大牛的面前班門弄斧了。長話短說,下面是我項(xiàng)目中用到的技術(shù)(圖1):1.JQuery的FlexiGrid插件2.ASP.NET MVC3.NVelocity目前沒有與MVC結(jié)合,只是用來簡單的替換模板4...閱讀全文 posted @?2009-11-10 07:28?劉冬.NET 閱讀(20863) |?評論 (52)?編輯 10分鐘搞定Linq to NHibernate(二)——查詢篇 摘要: 有人問過我一個問題,既然用了NHibernate還有必要用Linq嗎?就這個問題,我回答下列幾點(diǎn): 1.Linq to NHibernate有VS的IDE提示,編譯器可以幫助我提示出錯誤?! ?.Linq to NHibernate最大限度的幫我們優(yōu)化SQL語句,尤其是匿名類的查詢語句和聚合函數(shù)的查詢。 3.可以結(jié)合Linq加NHibernate各自的延遲加載特性,幫我們在必要的時候生成特定的...閱讀全文 posted @?2009-10-18 23:48?劉冬.NET 閱讀(6264) |?評論 (9)?編輯 10分鐘搞定Linq to NHibernate(一)——環(huán)境篇 摘要: 在微軟發(fā)布C# 3.0后, LINQ在項(xiàng)目中發(fā)揮了重要作用。作為3.0語言身份的象征之一,學(xué)習(xí)LINQ有為重要。而NHibernate作為運(yùn)用最廣的ORM框架之一,在大型項(xiàng)目中廣受開發(fā)人員的青睞。前不久,NHibernate Forge宣布NHiberante Linq 1.0正式發(fā)布了(參考)。Linq to NHibernate有機(jī)的在NHibernate結(jié)合了Linq的查詢功能,良好的把LI...閱讀全文 posted @?2009-10-16 02:16?劉冬.NET 閱讀(7374) |?評論 (38)?編輯
轉(zhuǎn)載于:https://www.cnblogs.com/280850911/p/3197102.html
總結(jié)
以上是生活随笔為你收集整理的【转】NHibernate入门教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 骁龙750g是不是双模5G 较骁龙730
- 下一篇: float元素一定要闭合