Configurationconfig=newConfiguration();這種配置方法將會(huì)到應(yīng)用程序配置文件(App.Config,Web.Config)中查找NHibernate的配置信息,NHibernate的配" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

NHibernate Step by Step (三) Configuration和

系統(tǒng) 1738 0

NHibernate Step by Step ( )Configuration Sessionfactory

好了,我們?cè)購(gòu)念^看一看 Configuration ,是否只能從 App.config 中取配置信息??

當(dāng)然不是了,以下是 3 種最常見的配置:

<1> Configuration config = new Configuration();

這種配置方法將會(huì)到應(yīng)用程序配置文件( App.Config,Web.Config )中查找 NHibernate 的配置信息, NHibernate 的配置節(jié)必須符合應(yīng)用程序配置文件個(gè)格式,前面的教程我們已經(jīng)看到過了。

<2> Configuration config = new Configuration().Configure();

這種配置方法將會(huì)在應(yīng)用的相同目錄查找名為 ”hibernate.cfg.xml” 的標(biāo)準(zhǔn) Hibernate 配置

文件,格式如下:

<? xmlversion="1.0"encoding="utf-8" ?>
< hibernate-configuration xmlns ="urn:nhibernate-configuration-2.0" >

< session-factory name ="MySessionFactory" >

<!-- properties -->
< property name ="connection.provider" > NHibernate.Connection.DriverConnectionProvider </ property >
< property name ="connection.driver_class" > NHibernate.Driver.SqlClientDriver </ property >
< property name ="connection.connection_string" > Server=localhost;initialcatalog=Hibernate;IntegratedSecurity=SSPI </ property >
< property name ="show_sql" > false </ property >
< property name ="dialect" > NHibernate.Dialect.MsSql2000Dialect </ property >
< property name ="use_outer_join" > true </ property >
< property name ="query.substitutions" > true1,false0,yes'Y',no'N' </ property >

<!-- mappingfiles -->
< mapping assembly ="Test.Model" />
</ session-factory >
</ hibernate-configuration >


<3> Configuration config = new Configuration().Configure(configFileName);

這種配置方法將查找指定的 Hibernate 標(biāo)準(zhǔn)配置文件,可以是絕對(duì)路徑或者相對(duì)路徑。

另外我們還可以通過編碼的方式添加配置信息:

Hashtableprops = new Hashtable();
props[“dialect”]
= xxxx;



config.Properties
= props;


這種方式不夠配置文件來的靈活,所以我們一般不建議使用。

在取得 config 后,我們還需要進(jìn)行映射文件添加,同樣,我們常用以下 3 種不同的方法:

<1> config.AddXmlFile(“Person.hbm.xml”);

<2> config.AddClass(typeof(Test.Model.Person));

<3> config.AddAssembly(“Test.Model”);

以上方法都可以用“階梯式“的編碼風(fēng)格,如下:

config.AddXmlFile(“Person.hbm.xml”)

.AddXmlFile(“User.hbm.xml”)

.AddClass(
typeof (Test.Model.Customer));

當(dāng)然,為了方便起見,我們一般把所有的影射類文件及 xml 文件統(tǒng)一放在一個(gè)程序集中,然后使用 config.AddAssembly(assemblyName) 的方式,讓 NHibernate 自動(dòng)去查找指定程序集中所有的映射文件和映射類。

你有沒有發(fā)現(xiàn)在我們使用標(biāo)準(zhǔn)的 hibernate 配置文件時(shí),有如下一個(gè)元素:

<!-- mapping files -->

<mapping assembly="Test.Model" />

對(duì)了,你想的不錯(cuò),我們可以避免在代碼中捆綁映射程序集,而在配置文件中指定,這種方式可以說是最靈活的了。

提示:在 Web 程序中,最好將配置文件改為 config 的后綴,否則在沒有添加對(duì) xml asp.net 映射的情況下,你的配置文件就有可能被下載喲!!

我們?cè)賮砜纯? Sessionfactory

ISessionFactorysessionFactory = config.BuildSessionFactory();

在由 Configuration 構(gòu)造完 SessionFactory 后, SessionFactory 便保留了配置信息而不再需要 Configuration ,之后 Configurationd 的任何變化都不會(huì)影響到已經(jīng)創(chuàng)建好的 SessionFactory ,如果你的配置信息發(fā)生變化,那么,毋庸置疑,你必須重新由 Configuration 構(gòu)造出一個(gè)新的 SessionFactory 來。

注意: SessionFactory 是一個(gè) Heavy Object ,它不但保存了配置信息,而且還有所有的映射關(guān)系(你可以調(diào)用 GetAllCollectionMetadata 方法試驗(yàn)一下),以及需要進(jìn)行總體維護(hù)的緩存等等信息,所以,我們不應(yīng)該重復(fù)地創(chuàng)建 SessionFactory 對(duì)象,而應(yīng)該充分共用已經(jīng)創(chuàng)建出來的 SessionFactory 對(duì)象,同時(shí), SessionFactory 也是一個(gè)線程安全的對(duì)象,所以在多線程的場(chǎng)景下也完全可以共用。在我們實(shí)際開發(fā)中,我們可以在初始化的部分構(gòu)造一個(gè) SessionFactory 即可,比如,在一個(gè)公共靜態(tài)類中初始化一個(gè) SessionFactory readonly 常量等等。

另外需要注意的是,如果你要對(duì)多個(gè)數(shù)據(jù)庫(kù)進(jìn)行操作,那么你可以配置針對(duì)每個(gè)數(shù)據(jù)庫(kù)而創(chuàng)建對(duì)應(yīng)的 SessionFactory ——大部分情況下,一個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)一個(gè) SessionFactory 足夠使用。

好了,這一篇就講這么多,我們下次再接著練習(xí)。
任何建議或者批評(píng),請(qǐng) e abluedog@163.com

NHibernate Step by Step (三) Configuration和Sessionfactory


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产精品亚洲精品影院 | 日本一区二区三区免费在线观看 | 欧美精品一区二区三区视频 | 亚洲国产天堂久久综合9999 | 亚洲欧美日韩成人网 | 4huh34四虎最新久 | 九九视频精品在线 | 羞羞视频免费网站在线 | 国产97在线观看 | 欧美日韩亚洲国产一区二区综合 | 再猛点深使劲爽日本免费视频 | 最近中文字幕无免费视频 | 精品一久久香蕉国产线看观看下 | 亚洲性一区 | 国产日本久久久久久久久婷婷 | 精品欧美成人bd高清在线观看 | 日韩国产欧美精品综合二区 | 天天干人人 | 日本特黄在线观看免费 | 四虎网站 | 深夜在线网址 | 精品国产免费观看一区 | 亚洲欧美中文日韩综合 | 亚洲国产婷婷香蕉久久久久久 | 四虎国产精品永久地址49 | 69精品在线观看 | 欧美大香 | 国产精品青青青高清在线密亚 | 久色网 | 精品精品国产高清a毛片牛牛 | 香蕉依人 | 久久亚洲国产精品一区二区 | 亚洲视频在线一区二区 | 国产精品成人免费视频 | 色中涩 | 二级毛片在线观看 | 亚洲欧美一区二区三区 | 黄 色 免费网 站 成 人 | 日本免费的一级绿象 | 国产精品1 | 日本人一级大毛片 |