1. 程式人生 > >NHibernate讀取配置檔案的三種方式

NHibernate讀取配置檔案的三種方式

當然,為了方便起見,我們一般把所有的影射類檔案及xml檔案統一放在一個程式集中,然後使用config.AddAssembly(assemblyName)的方式,讓NHibernate自動去查詢指定程式集中所有的對映檔案和對映類。你有沒有發現在我們使用標準的hibernate配置檔案時,有如下一個元素:
<!-- mapping files -->
<mapping assembly="Test.Model" />

對了,你想的不錯,我們可以避免在程式碼中捆綁對映程式集,而在配置檔案中指定,這種方式可以說是最靈活的了。

提示:在Web程式中,最好將配置檔案改為config的字尾,否則在沒有新增對xml的asp.net對映的情況下,你的配置檔案就有可能被下載喲!!

我們再來看看Sessionfactory:

ISessionFactory sessionFactory = config.BuildSessionFactory();

在由Configuration構造完SessionFactory後,SessionFactory便保留了配置資訊而不再需要Configuration,之後Configurationd的任何變化都不會影響到已經建立好的SessionFactory,如果你的配置資訊發生變化,那麼,毋庸置疑,你必須重新由Configuration構造出一個新的SessionFactory來。

注意:SessionFactory是一個Heavy Object,它不但儲存了配置資訊,而且還有所有的對映關係(你可以呼叫GetAllCollectionMetadata方法試驗一下),以及需要進行總體維護的快取等等資訊,所以,我們不應該重複地建立SessionFactory物件,而應該充分共用已經創建出來的SessionFactory物件,同時,SessionFactory也是一個執行緒安全的物件,所以在多執行緒的場景下也完全可以共用。在我們實際開發中,我們可以在初始化的部分構造一個SessionFactory即可,比如,在一個公共靜態類中初始化一個SessionFactory的readonly常量等等。

另外需要注意的是,如果你要對多個數據庫進行操作,那麼你可以配置針對每個資料庫而建立對應的SessionFactory——大部分情況下,一個數據庫對應一個SessionFactory足夠使用。