`
javatoyou
  • 浏览: 1084581 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

NHibernate Step by Step (三) Configuration和Sessionfactory

 
阅读更多

NHibernate Step by Step ()ConfigurationSessionfactory

好了,我们再从头看一看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配置

文件,格式如下:

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

<session-factoryname="MySessionFactory">

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

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


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

这种配置方法将查找指定的Hibernate标准配置文件,可以是绝对路径或者相对路径。

另外我们还可以通过编码的方式添加配置信息:

Hashtableprops=newHashtable();
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”);

以上方法都可以用“阶梯式“的编码风格,如下:

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

.AddXmlFile(“User.hbm.xml”)

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

当然,为了方便起见,我们一般把所有的影射类文件及xml文件统一放在一个程序集中,然后使用config.AddAssembly(assemblyName)的方式,让NHibernate自动去查找指定程序集中所有的映射文件和映射类。

你有没有发现在我们使用标准的hibernate配置文件时,有如下一个元素:

<!-- mapping files -->

<mapping assembly="Test.Model" />

对了,你想的不错,我们可以避免在代码中捆绑映射程序集,而在配置文件中指定,这种方式可以说是最灵活的了。

提示:在Web程序中,最好将配置文件改为config的后缀,否则在没有添加对xmlasp.net映射的情况下,你的配置文件就有可能被下载哟!!

我们再来看看Sessionfactory

ISessionFactorysessionFactory=config.BuildSessionFactory();

在由Configuration构造完SessionFactory后,SessionFactory便保留了配置信息而不再需要Configuration,之后Configurationd的任何变化都不会影响到已经创建好的SessionFactory,如果你的配置信息发生变化,那么,毋庸置疑,你必须重新由Configuration构造出一个新的SessionFactory来。

注意:SessionFactory是一个Heavy Object,它不但保存了配置信息,而且还有所有的映射关系(你可以调用GetAllCollectionMetadata方法试验一下),以及需要进行总体维护的缓存等等信息,所以,我们不应该重复地创建SessionFactory对象,而应该充分共用已经创建出来的SessionFactory对象,同时,SessionFactory也是一个线程安全的对象,所以在多线程的场景下也完全可以共用。在我们实际开发中,我们可以在初始化的部分构造一个SessionFactory即可,比如,在一个公共静态类中初始化一个SessionFactoryreadonly常量等等。

另外需要注意的是,如果你要对多个数据库进行操作,那么你可以配置针对每个数据库而创建对应的SessionFactory——大部分情况下,一个数据库对应一个SessionFactory足够使用。

好了,这一篇就讲这么多,我们下次再接着练习。
任何建议或者批评,请eabluedog@163.com

分享到:
评论

相关推荐

    NHibernate Step by Step入门教程

    在"NHibernate Step by Step"教程中,你将逐步学习如何设置项目环境,配置NHibernate,创建映射文件,使用Session和SessionFactory进行基本的CRUD操作,以及如何进行复杂查询。此外,codesmith工具的提及可能意味着...

    NHibernate Step by Step(教程).doc

    ### NHibernate Step by Step 教程知识点概览 #### 一、环境搭建与配置 - **NHibernate**:NHibernate 是一个开源的对象关系映射器(Object-Relational Mapper,ORM),它允许开发者以面向对象的方式操作关系型...

    Linq2NHibernate.Step1

    然后,使用`NHibernate.Cfg.Configuration`类加载配置,并创建会话工厂。 6. **使用LINQ查询**: 有了会话工厂,你可以创建一个`ISession`实例,然后在上面使用LINQ查询。例如,获取所有用户: ```csharp using...

    NHibernate Configuration 3

    在这个NHibernate配置的第三部分中,我们将深入理解如何设置和加载配置以及如何处理映射文件。 首先,NHibernate的配置可以通过多种方式实现。下面列出了三种常见的配置方法: 1. `Configuration config = new ...

    Nhibernate常见的三种配置方法

    ### Nhibernate常见的三种配置方法 在软件开发过程中,Nhibernate作为一种流行的对象关系映射(ORM)工具,其强大的功能可以帮助开发者更高效地完成数据持久化工作。然而,如何正确配置Nhibernate成为了许多开发...

    Nhibernate三层架构的简单实例

    通过这个简单的Nhibernate三层架构实例,初学者可以理解如何在实际项目中整合ORM框架和分层设计原则,以实现高效、可维护的应用程序。随着经验的积累,开发者还可以探索更高级的概念,如拦截器、事件监听器和多态性...

    Nhibernate三层架构

    **Nhibernate三层架构详解** Nhibernate是一款强大的对象关系映射(ORM)框架,它能够将数据库中的表映射为C#类,从而简化数据库操作。在开发大型应用时,通常会采用三层架构来提高代码的可维护性和可扩展性。三层...

    NHibernate

    9. **缓存机制**:NHibernate内置了第一级缓存(Session级别)和第二级缓存(SessionFactory级别),提高数据访问效率。还可以集成第三方缓存服务,如Memcached或Redis。 10. **性能优化**:理解何时使用Flush模式...

    Nhibernate_一步一步

    #### 三、NHibernate的安装与配置 为了开始使用NHibernate,首先需要准备以下工具和资源: 1. **NHibernate**:可以从官方网站[www.nhibernate.org](http://www.nhibernate.org/)下载最新版本。当前版本为1.0.2。 ...

    Nhibernate框架

    Nhibernate拥有丰富的第三方插件和扩展,如FluentNHibernate简化配置,NHibernate Profiler帮助调试性能问题等。同时,活跃的社区提供了大量的文档、教程和问题解答资源,有助于开发者快速上手和解决问题。 总之,...

    Nhibernate的三层架构用户管理系统

    这个用户管理系统是一个典型的Nhibernate应用实例,对于学习和理解Nhibernate的使用,以及三层架构的组织结构,是非常有价值的参考资料。通过深入研究,开发者不仅可以提升Nhibernate的技能,还能学习到如何构建可...

    C# 三层架构 例程 Nhibernate Npring集成

    4. **NHibernate配置**:示例可能包含NHibernate的配置文件,定义了数据库连接字符串、映射文件等信息,展示了如何设置和初始化NHibernate SessionFactory。 5. **NSpring配置**:NSpring的配置文件会定义bean的...

    Nhibernate

    通过这个Nhibernate的demo,开发者可以学习如何配置多数据库环境,如何定义实体和映射,如何创建和使用SessionFactory,以及如何利用查询API进行数据操作。此外,还可以了解到如何处理事务和优化性能,这些都是使用...

    Spring.Net结合NHibernate完整代码

    Spring.NET和NHibernate是两个非常重要的.NET框架,用于构建企业级的、面向服务的应用程序。Spring.NET是一个开源的IOC(Inversion of Control)容器,它提供了依赖注入、AOP(面向切面编程)以及一系列其他高级特性...

    NHibernate的小例子

    3. **创建 SessionFactory**:配置完成后,通过调用 `configuration.BuildSessionFactory()` 创建 SessionFactory。SessionFactory 是线程安全的,通常在整个应用程序生命周期内只创建一次。 4. **使用 Session**:...

    NHibernate 3.2实例

    在这个“NHibernate 3.2实例”中,我们将深入探讨这个版本的核心特性和如何进行映射配置,特别是通过代码(Mapping by Code)的方式。 在NHibernate 3.2中,映射是定义对象与数据库表之间关系的关键步骤。传统的...

    基于Nhibernate的三层架构设计(.NET)

    通过以上详细解析,我们可以看出,该文档提供了一个基于Nhibernate的三层架构设计范例,不仅详细阐述了每一层的具体职责和技术实现,还分析了这种架构的优点与不足之处,为后续的项目开发提供了宝贵的参考价值。

    vs2010下C# WinForm 搭建三层架构+NHibernate

    总之,这个项目为初学者提供了一个了解三层架构和NHibernate的良好起点。通过实践这个项目,你可以学习到如何在VS2010中构建一个简单的WinForm应用,以及如何利用三层架构和ORM工具提升开发效率和代码质量。对于...

Global site tag (gtag.js) - Google Analytics