NHibernate配置详解:Configuration与SessionFactory
需积分: 1 72 浏览量
更新于2024-09-11
收藏 55KB DOC 举报
"NHibernate配置详解,包括从XML文件加载配置信息和使用Configuration类的不同方法"
在NHibernate,配置是至关重要的一个环节,它定义了如何连接数据库、映射对象关系等核心设置。NHibernate提供了多种方式进行配置,以适应不同的项目需求。在本篇文章中,我们将深入探讨NHibernate的配置过程,尤其是通过`Configuration`类进行的配置。
首先,我们可以使用以下两种常见的方法来初始化`Configuration`实例:
1. `Configuration config = new Configuration();`
这种方式会自动从应用程序的配置文件(如`App.config`或`Web.config`)中读取NHibernate的配置信息。配置信息需要按照.NET应用程序配置文件的格式编写。
2. `Configuration config = new Configuration().Configure();`
这种方法会在应用的根目录下查找名为`hibernate.cfg.xml`的标准NHibernate配置文件。这个文件遵循特定的XML格式,包含`session-factory`元素以及一系列的属性,用于定义数据库连接、驱动类、连接字符串等。
例如,`hibernate.cfg.xml`文件可能包含如下内容:
```xml
<?xml version="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>
<!-- 更多配置属性... -->
</session-factory>
</hibernate.cfg.xml>
```
除了上述两种方法,还可以通过编程方式动态添加配置,例如:
```csharp
Configuration config = new Configuration();
config.AddXmlFile("Person.hbm.xml");
```
这里,`AddXmlFile`方法用于加载特定的映射文件,如`Person.hbm.xml`,该文件定义了实体类`Person`与数据库表的映射。
一旦配置完成,接下来通常会使用`Configuration`实例创建`SessionFactory`,它是NHibernate的核心组件,负责管理数据库会话。例如:
```csharp
ISessionFactory sessionFactory = config.BuildSessionFactory();
```
`SessionFactory`是线程安全的,通常在整个应用程序生命周期中只创建一次。然后,通过`SessionFactory`可以创建`Session`实例,`Session`是与数据库交互的入口点,处理对象的持久化操作。
NHibernate的配置相当灵活,既支持从配置文件读取,也支持程序化的方式,这使得开发者可以根据项目需求定制合适的配置策略。理解并熟练掌握这些配置方法,对于高效地使用NHibernate进行数据访问至关重要。
2016-12-01 上传
2018-02-23 上传
2013-11-14 上传
2009-08-24 上传
2007-07-25 上传
2022-09-21 上传
2011-02-15 上传
2008-07-22 上传
2013-02-25 上传
wb_lj
- 粉丝: 1
- 资源: 6
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器