NHibernate Step by Step (三) Configuration和Sessionfactory
来源:互联网 发布:淘宝联盟引流软件 编辑:程序博客网 时间:2024/05/02 07:29
http://www.cnblogs.com/abluedog/archive/2006/04/17/377630.html
NHibernate Step by Step (三) Configuration和Sessionfactory
好了,我们再从头看一看Configuration,是否只能从App.config中取配置信息??
当然不是了,以下是3种最常见的配置:
<1> Configuration config = new Configuration();
这种配置方法将会到应用程序配置文件(App.Config,Web.Config)中查找NHibernate的配置信息,NHibernate的配置节必须符合应用程序配置文件个格式,前面的教程我们已经看到过了。
<2> Configuration config = new Configuration().Configure();
这种配置方法将会在应用的相同目录查找名为”hibernate.cfg.xml”的标准Hibernate配置
文件,格式如下:
<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;initial catalog=Hibernate;Integrated Security=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">true 1, false 0, yes 'Y', no 'N'</property>
<!-- mapping files -->
<mapping assembly="Test.Model" />
</session-factory>
</hibernate-configuration>
<3> Configuration config = new Configuration().Configure(configFileName);
这种配置方法将查找指定的Hibernate标准配置文件,可以是绝对路径或者相对路径。
另外我们还可以通过编码的方式添加配置信息:
props[“dialect”] = xxxx;
…
config.Properties = props;
这种方式不够配置文件来的灵活,所以我们一般不建议使用。
在取得config后,我们还需要进行映射文件添加,同样,我们常用以下3种不同的方法:
<1> config.AddXmlFile(“Person.hbm.xml”);
<2> config.AddClass(typeof(Test.Model.Person));
<3> config.AddAssembly(“Test.Model”);
以上方法都可以用“阶梯式“的编码风格,如下:
.AddXmlFile(“User.hbm.xml”)
.AddClass(typeof(Test.Model.Customer));
当然,为了方便起见,我们一般把所有的影射类文件及xml文件统一放在一个程序集中,然后使用config.AddAssembly(assemblyName)的方式,让NHibernate自动去查找指定程序集中所有的映射文件和映射类。
你有没有发现在我们使用标准的hibernate配置文件时,有如下一个元素:
<!-- mapping files -->
<mapping assembly="Test.Model" />
对了,你想的不错,我们可以避免在代码中捆绑映射程序集,而在配置文件中指定,这种方式可以说是最灵活的了。
提示:在Web程序中,最好将配置文件改为config的后缀,否则在没有添加对xml的asp.net映射的情况下,你的配置文件就有可能被下载哟!!
我们再来看看Sessionfactory:
在由Configuration构造完SessionFactory后,SessionFactory便保留了配置信息而不再需要Configuration,之后Configurationd的任何变化都不会影响到已经创建好的SessionFactory,如果你的配置信息发生变化,那么,毋庸置疑,你必须重新由Configuration构造出一个新的SessionFactory来。
注意:SessionFactory是一个Heavy Object,它不但保存了配置信息,而且还有所有的映射关系(你可以调用GetAllCollectionMetadata方法试验一下),以及需要进行总体维护的缓存等等信息,所以,我们不应该重复地创建SessionFactory对象,而应该充分共用已经创建出来的SessionFactory对象,同时,SessionFactory也是一个线程安全的对象,所以在多线程的场景下也完全可以共用。在我们实际开发中,我们可以在初始化的部分构造一个SessionFactory即可,比如,在一个公共静态类中初始化一个SessionFactory的readonly常量等等。
另外需要注意的是,如果你要对多个数据库进行操作,那么你可以配置针对每个数据库而创建对应的SessionFactory——大部分情况下,一个数据库对应一个SessionFactory足够使用。
- NHibernate Step by Step (三) Configuration和Sessionfactory
- NHibernate Step by Step (三) Configuration和Sessionfactory
- NHibernate Step by Step (三) Configuration和Sessionfactory
- NHibernate Step by Step (三) Configuration和Sessionfactory
- NHibernate Step by Step (三) Configuration和Sessionfactory
- NHibernate Step by Step (三) Configuration和Sessionfactory
- NHibernate Step by Step (三) Configuration和Sessionfactory
- NHibernate Step by Step (三) Configuration和Sessionfactory
- NHibernate Step by Step (三) Configuration和Sessionfactory
- NHibernate Step by Step
- NHibernate Step by Step
- NHibernate Step By Step(1)-配置文件(Configuration)
- NHibernate Step By Step(1)-配置文件(Configuration)
- NHibernate Step by Step:序篇
- NHibernate Step by Step:序篇
- NHibernate Step by Step:序篇
- NHibernate Step by Step (一) Hello,NHibernate!
- NHibernate Step by Step (一) Hello,NHibernate!
- BCB手动实现双缓冲
- 对文件部分内容的简单替换
- tomcat 如何设置内存
- Oracle创建用户、表空间、导入导出、...命令
- NHibernate Step by Step(二) 单表操作
- NHibernate Step by Step (三) Configuration和Sessionfactory
- 网页播放视频解决代码(来自百度知道)
- myeclipse下设置jquery智能显示
- NHibernate Step by Step (四)Session、Query及HQL
- 反射
- 继承中的成员方法和变量
- 在Global中Application_Error事件处理错误信息
- (转)堆栈与函数调用
- NHibernate Step by Step (五)Criteria Query