NHibernate入门:对象关系映射详解

4星 · 超过85%的资源 需积分: 3 13 下载量 30 浏览量 更新于2024-10-26 收藏 74KB DOC 举报
"Nhibernate入门教程:一步步学会.NET中的对象关系映射工具Nhibernate,实现数据持久化" Nhibernate是一款强大的对象关系映射(ORM)框架,适用于.NET环境,它是Java版Hibernate的.NET实现。通过Nhibernate,开发者可以将.NET应用程序中的对象模型直接映射到数据库中的表,从而避免手动编写SQL语句,提高开发效率。Nhibernate的主要目标是简化数据访问层的复杂性,让开发者更专注于业务逻辑,而不是数据库交互。 ### 1. NHibernate简介 Nhibernate的核心功能在于对象持久化,它能够自动管理对象与数据库之间的转换。当对象状态改变时,Nhibernate会自动更新数据库;反之,从数据库中查询的数据会被转化为对象,供应用程序使用。这使得开发者可以使用面向对象的方式处理数据,而不是传统的SQL查询。 ### 2. 前期准备 开始使用Nhibernate之前,你需要从官方网站下载最新版本的Nhibernate,并安装到本地目录。安装后,通常会有bin、doc和src三个子目录,bin包含所需的DLL文件,doc包含文档,src则包含源代码。在Visual Studio项目中,需要添加对以下关键程序集的引用: - NHibernate.dll:核心ORM库 - Log4net.dll:用于日志记录 - Iesi.Collections.dll:提供集合类的支持 - Castle.DynamicProxy.dll:实现依赖注入和动态代理 ### 3. 开始使用Nhibernate #### (1) 创建数据库 首先,你需要有一个数据库来存储数据。在这个例子中,我们创建了一个名为TestDB的数据库。 #### (2) 配置hibernate.cfg.xml 配置文件`hibernate.cfg.xml`是Nhibernate工作的重要组成部分,它包含了连接数据库的相关信息,如数据库提供商、驱动类、连接字符串等。例如: ```xml <?xml version="1.0" encoding="utf-8"?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory name="NHibernate.Test"> <!-- properties --> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <property name="connection.connection_string">your_connection_string_here</property> <!-- 其他配置项... --> </session-factory> </hibernate.cfg.xml> ``` 请替换`your_connection_string_here`为实际的数据库连接字符串。 ### 4. 映射对象和表 Nhibernate使用XML或注解方式定义对象和数据库表之间的映射。例如,一个简单的映射文件可能如下所示: ```xml <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name="YourNamespace.YourEntityClass" table="YourTableName"> <id name="Id"> <generator class="identity" /> </id> <property name="YourProperty1" /> <property name="YourProperty2" /> <!-- 更多属性映射... --> </class> </hibernate-mapping> ``` ### 5. 使用Session和Transaction 在应用程序中,你需要通过`NHibernate.SessionFactory`创建`ISession`实例,然后使用`ISession`进行数据操作。每次数据库操作都应该包裹在一个`ITransaction`中,以确保事务的完整性和一致性。 ```csharp using (var session = sessionFactory.OpenSession()) using (var transaction = session.BeginTransaction()) { var entity = new YourEntityClass(); entity.YourProperty1 = "Value1"; entity.YourProperty2 = "Value2"; session.Save(entity); transaction.Commit(); } ``` ### 6. 查询数据 Nhibernate提供了多种查询方式,包括HQL(Hibernate Query Language)、Criteria API以及Linq-to-NHibernate。例如,使用HQL获取所有实体: ```csharp var query = session.CreateQuery("from YourEntityClass"); var entities = query.List<YourEntityClass>(); ``` ### 7. 进阶概念 Nhibernate还支持更多的高级特性,如缓存策略、第二级缓存、延迟加载(Lazy Loading)、集合映射、级联操作等。随着你对Nhibernate的深入理解,你可以根据项目需求选择合适的配置和策略。 Nhibernate作为一个强大的ORM框架,极大地简化了.NET开发中的数据库操作,让开发者能够更加专注于业务逻辑。通过学习和实践,你可以熟练掌握如何使用Nhibernate来提升你的.NET应用程序的开发效率和可维护性。