NHibernate中文文档详解:持久化、集合映射与关联管理

需积分: 3 2 下载量 37 浏览量 更新于2024-08-01 收藏 353KB DOC 举报
"NHibernate中文文档" NHibernate是一个流行的开源对象关系映射(ORM)框架,它允许开发人员在.NET环境中使用面向对象的方式处理数据库操作。这份文档详细介绍了NHibernate的各种特性和使用方法。 1. NHibernate体系结构 NHibernate的核心组件是ISessionFactory,它是配置完成后创建的对象,用于管理数据库会话。ISessionFactory提供了创建ISession实例的能力,ISession是与数据库交互的主要接口。此外,NHibernate还包括了配置、实体管理和事务处理等功能。 2. ISessionFactory配置 配置ISessionFactory可以通过编程方式进行,包括设置数据源、连接字符串、配置属性等。用户可以选择自行提供ADO.NET连接,或者让NHibernate内部管理这些连接。可选配置属性涉及日志记录、缓存策略等。日志记录是调试和性能分析的重要工具。 3. 持久化类(Persistent Classes) 持久化类通常使用Plain Old CLR Objects (POCOs),即普通的.NET类来表示数据库中的表。为了实现继承,可以使用NHibernate的继承映射策略。同时,应覆写Equals()和GetHashCode()方法以确保对象比较的正确性。持久化生命周期中的回调方法如SaveOrUpdate、Flush等允许在特定操作前后执行自定义逻辑。 4. O/R Mapping基础 NHibernate使用XML或属性注解进行对象关系映射。映射文件中,`hibernate-mapping`元素定义映射的根,`class`元素映射一个类,`id`元素定义主键,而`composite-id`和`discriminator`元素则用于更复杂的主键和子类区分。映射涵盖了从简单字段到复杂关系的多种情况。 5. 集合类(Collections)映射 NHibernate支持多种类型的集合映射,如List、Set、Bag等。映射集合时,可以指定延迟加载(Lazy Initialization)以提高性能。双向关联和三重关联允许在实体之间建立复杂的引用关系。异类关联则允许不同类型的对象存在于同一集合中。 6. 关联映射 单向和双向关联通过外键或表连接实现,其中表连接可以减少SQL查询的复杂性。级联操作如更新、删除可以在父对象上进行,影响到子对象,简化了业务逻辑。 7. 示例: Parent/Child 这部分提供了一个具体的父/子关系的案例,展示了如何设置双向一对多关系以及级联生命周期。级联操作可以避免手动处理子对象的保存和更新,保持数据一致性。 8. NHibernate缓存 NHibernate.Caches模块提供了缓存机制,以提高数据访问速度。缓存分为一级缓存(Session级别)和二级缓存(SessionFactory级别)。通过配置,开发人员可以集成不同的缓存提供者,如Redis或Memcached。 9. 使用Attributes进行映射 NHibernate.Mapping.Attributes库允许使用属性注解来代替XML进行映射。这种方式更加直观,易于代码维护,同时也支持元数据驱动的开发。 10. NHibernate.Tool.hbm2net 这是一个工具,它可以将Hibernate映射文件(.hbm.xml)转换为.NET实体类,帮助快速生成对应的持久化类。 11. Nullables NHibernate处理数据库中的空值(NULL)有特别的方法,确保在对象模型中正确地映射NULL值。 这份文档全面覆盖了NHibernate的各个方面,对于理解和使用NHibernate进行ORM开发非常有帮助。通过深入学习和实践,开发者能够充分利用NHibernate的特性,提高.NET应用程序的数据处理能力。