nhibernate使用_第1頁
已閱讀1頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第1章NHibernate體系結(jié)構(gòu)總覽總覽對NHibernate體系結(jié)構(gòu)的非常高層的概覽:這幅圖展示了NHibernate使用數(shù)據(jù)庫和配置文件數(shù)據(jù)來為應(yīng)用程序提供持久化服務(wù)(和持久化的對象)。我們試圖顯示更多NHibernate運行時體系結(jié)構(gòu)的細(xì)節(jié)。但挺不幸的,NHibernate是比較靈活的并且提供了好幾種不同的運行方式。我們展示一下兩種極端情況。輕型體系中,應(yīng)用程序自己提供連接,并且自行管理事務(wù)。這種方式使用了NHibernateA

2、PI的一個最小子集。全面解決體系中,對于應(yīng)用程序來說,所有的底層API都被抽象了,NHibernate會替你照管所有的細(xì)節(jié)。下面是圖中一些對象的定義:SessionFacty(NHibernate.ISessionFacty)對屬于單一數(shù)據(jù)庫的編譯過的映射文件的一個線程安全的,不可變的緩存快照。它是Session的工廠,是ConnectionProvider的客戶??梢猿钟幸粋€可選的(第二級)數(shù)據(jù)緩存,可以在進程級別或集群級別保存可以在

3、事物中重用的數(shù)據(jù)。會話Session(NHibernate.ISession)單線程,生命期短促的對象,代表應(yīng)用程序和持久化層之間的一次對話。封裝了一個連接。也是Transaction的工廠。保存有必需的(第一級)持久化對象的緩存,用于遍歷對象圖,或者通過標(biāo)識符查找對象。持久化對象(Persistent)及其集合(Collections)生命期短促的單線程的對象,包含了持久化狀態(tài)和商業(yè)功能。它們可能是普通的對象,唯一特別的是他們現(xiàn)在從屬

4、于且僅從屬于一個Session。一旦Session被關(guān)閉,他們都將從Session中取消聯(lián)系,可以在任何程序?qū)幼杂墒褂茫ū热?,直接作為傳送到表現(xiàn)層的DTO數(shù)據(jù)傳輸對象)。臨時對象(TransientObject)及其集合(Collection)目前沒有從屬于一個Session的持久化類的實例。他們可能是剛剛被程序?qū)嵗?,還沒有來得及被持久化,或者是被一個已經(jīng)關(guān)閉的Session所實例化的。事務(wù)Transaction(NHibernate

5、.ITransaction)(可選)單線程,生命期短促的對象,應(yīng)用程序用它來表示一批工作的原子操作。是底層的事務(wù)的抽象。一個Session某些情況下可能跨越多個Transaction事務(wù)。ConnectionProvider(NHibernate.Connection.ConnectionProvider)(可選)連接的工廠。從底層的IDbConnection抽象而來。對應(yīng)用程序不可見,但可以被開發(fā)者擴展實現(xiàn)。TransactionFa

6、cty(.sf.hibernate.TransactionFacty)(可選)事務(wù)實例的工廠。對應(yīng)用程序不可見,但可以被開發(fā)者擴展實現(xiàn)。在上面的輕型結(jié)構(gòu)中,程序沒有使用TransactionTransactionFacty或ConnectionProviderAPI直接和對話了。第2章ISessionFacty配置配置目錄目錄可編程配置方式獲取ISessionFacty用戶自行提供連接NHibernate提供連接可選配置屬性SQL方言(

7、SQLDialects)外連接抓?。∣uterJoinFetching)自定義CacheProvider查詢語言替換LoggingNHibernateNHibernate提供提供連接連接另一種方法就是,你可以讓ISessionFacty替你打開連接。SessionFacty必須事先知道連接的參數(shù),有幾種不同的方法設(shè)置參數(shù):1.通過提供一個IDictionary實例給Configuration.Properties。2.在名為nhiber

8、nate的System.Configuration.NameValueSectionHler類型的配置節(jié)點添加屬性。3.在hibernate.cfg.xml中包含元素。如果你使用這種方法,打開一個ISession是非常簡單的:ISessionsession=sessions.OpenSession()openanewSessiondosomedataaccesswkanADOconnectionwillbeusedondem所有的NHi

9、bernate屬性名和約束都在NHibernate.Cfg.Environment類中定義。我們討論一下連接配置最重要的幾項設(shè)置:假若你設(shè)置了如下的屬性,Hibernate會使用DataProvider來得到連接:表2.1.NHibernate屬性屬性屬性名屬性名用途用途hibernate.connection.provider_class定制IConnectionProvider的類型.例如:例如:full.classname.of.

10、ConnectionProvider(如果提供者創(chuàng)建在NHibernate中)或者full.classname.of.ConnectionProviderassembly(如果使用一個自定義的IConnectionProvider接口的實現(xiàn),它不屬于NHibernate)。hibernate.connection.driver_class定制IDriver的類型.full.classname.of.Driver(如果驅(qū)動類創(chuàng)建在NHib

11、ernate中)或者full.classname.of.Driverassembly(如果使用一個自定義IDriver接口的實現(xiàn),它不屬于NHibernate)。hibernate.connection.connection_string用來獲得連接的連接字符串.hibernate.connection.isolation設(shè)置事務(wù)隔離級別.請檢查System.Data.IsolationLevel來得到取值的具體意義并且查看數(shù)據(jù)庫文檔以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論