看了许多人的文章,将Ado.net 与NHibernate看作类似的东西,频繁将两者进行比较。对于那些朋友的观点,我不认同!
我认为ado.net 和 nhibernate是完全不同层次的东西。 他们之间的关系有点类似于:封装了Win32 API调用的拖管对像与该Win32 API本身的关系。
我本人对NHibernate没有研究。只是听同事讨论过,对于NHibernate的性能优劣,框架的好坏,我不敢下结论。但这并不影响我对 NHibernate整体的了解。我认为NHibernate是一套实现O/R Mapping的框架之一。 只要它没脱离这个范畴,我认为下面的理解应该是对的。
下面论述一下我心目中的Ado.net与NHibernate的关系,欢迎大家指出缺点,补充我的NHibernate知识。谢谢!
ado.net是.net平台上的托管的数据访问提供程序 ,是.net程序访问数据库的一个基础组件,绝大部分程序需要访问数据库都使用此组件。当然,你也可以调用Com组使用以前版本的Ado.
而 Nhibernate是一个数据映射的工具,它将数据库表中的数据映射成各种业务对像的形式。 其实我们不用Nhibernate一样可以做到映射,我们 将数据库表中的字段组合成一个类就行了。只是Nhibernate可以实现自动化,有一个良好的框架,有良好的对像缓存机制。
ado.net 与NHibernate的关系:
ado.net提供数据访问的底层功能,而NHibernate是在Ado.net之上提供将数据封装成对像的一个框架。 换句话说: NHibernate同样是使用Ado.net来访问数据库的。 所以,Nhibernate与Ado.net的关系可以认为是: 调用和被调用的关系。
所以,“我使用了Nhibernate,代替了Ado.net”;, 是不准确的, 拿ado.net 与Nhibernate对比也是不恰当的。 两者跟本不是一回事。 就好比有人拿微软的DataAccess Application Block 与Ado.net对比而得出 DataAccess Application Block 比Ado.net更好一样搞笑。 实际上,它只是对于Ado.net的再一次封装。是在Ado.net上面再加一层,使用NHibernate实际上就是通过NHibernate间际使用 Ado.net. 所有与Ado.net打交道的事情全部由NHibernate代劳了。
所以如果按以下方式定义Nhibernate的话,我表示认同:
Nhibernate是采用面向对的方式对Ado.net数据访问进行了进一步的封装,通过隐藏Ado.net调用的细节,隐藏了Sql和数库库表的操 作。实现了数据库表与业务对像的自动映射,并提供了数据对像缓存和各种事件机制。 有效解决了我们人工进行数据库和业务对像映射时的 代码量大的问题。缓存功能缓解了数据库映射所带来的性能问题。 让我们能够以比较小的代价实现更好的面向对像的数据库程序开发。 (转载于博客园另一位高手)
分享到:
相关推荐
Hibernate是一个目前应用的最广泛的开放源代码的对象关系映射框架,它对Java的JDBC(类似于ADO.Net)进行了非常轻量级的对象封装,使得程序员可以随心所欲的使用对象编程思维来操纵数据库,目前在国内Java开发界已经...
NHibernate是一个目前应用的最广泛的开放源代码的对象关系映射框架,它对Java的JDBC(类似于ADO.Net)进行了非常轻量级的对象封装,使得程序员可以随心所欲的使用对象编程思维来操纵数据库,目前在国内Java开发界...
在.NET环境中,SQLite 可以通过 ADO.NET 提供器进行访问,允许.NET开发者像操作其他数据库一样操作 SQLite 数据库。 NHibernate 是一个流行的面向对象的持久化框架,源自 Java 平台的 Hibernate。它提供了一种抽象...
NHibernate来源于非常优秀的基于Java的Hibernate关系型持久化工具。 NHibernate从数据库底层来持久化你的.Net对象到关系型数据库。NHibernate为你处理这些,你不用自己写SQL去数据库存取对象。你的代码仅仅和对象...
Hibernate是一个目前应用的最广泛的开放源代码的对象关系映射框架,它对Java的JDBC(类似于ADO.Net)进行了非常轻量级的对象封装,使得程序员可以随心所欲的使用对象编程思维来操纵数据库,目前在国内Java开发界已经...
LINQ:Language Integrated Query 语言集成查询,其本质是对ADO.NET结果集通过反射连同泛型特性转换成对象集,实现OR模型的转换(类似JAVA中Hibernate框架,.NET中的NHibernate),它完全是基于.NET 2.0 的框架。...
NHibernate 是一个针对.NET环境的对象/关系数据库映射工具,实现了Java的Hibernate在.NET平台上的功能。它将对象模型映射到关系数据库,减少了数据库操作的复杂性,允许开发者以面向对象的方式处理数据。NHibernate...
NHibernate 是基于 Hibernate 的概念,Hibernate 是一个广泛应用于 Java 平台的 ORM(对象关系映射)框架。在 .NET 上,NHibernate 提供了类似的功能,将 .NET 类和数据库表之间进行映射,实现了数据的透明访问。它...
5. **事务管理**:由于 NHibernate 支持 ADO.NET 事务,因此可以在 Session 上开始、提交或回滚事务。事务对于保证数据的一致性至关重要。 6. **查询语言**:NHibernate 提供了 HQL(Hibernate 查询语言)和 ...
LINQ:Language Integrated Query 语言集成查询,其本质是对ADO.NET结果集通过反射连同泛型特性转换成对象集,实现OR模型的转换(类似JAVA中Hibernate框架,.NET中的NHibernate),它完全是基于.NET 2.0 的框架。
NHibernate 支持 ADO.NET 事务,可以使用 Transaction 对象来管理事务,确保数据的一致性和完整性。 9. **NHirbernetTest 示例** 压缩包中的 "NHirbernetTest" 文件很可能是包含示例代码的项目,它演示了如何在...
NHibernate 提供了集成的事务处理,可以与 ADO.NET 或其他事务管理器协同工作,确保数据的一致性。 11. **事件系统**: NHibernate 允许监听和处理对象生命周期中的各种事件,如对象加载、保存、更新和删除,可以...
NHibernate支持多种数据库,如MySQL、SQL Server、Oracle等,并且遵循ADO.NET标准。 2. **版本2.0.0.CR1**: CR1代表Candidate Release 1,是正式版本前的一个候选版本。这个版本可能包含了新的功能、性能优化以及...
12. **事务管理**:讲解了如何与ADO.NET事务集成,以及在NHibernate中进行事务控制。 13. **异常处理**:列出了可能遇到的异常情况及其含义,帮助开发者解决错误。 通过《NHibernate Reference 3.0.0》文档,...
Dapper不提供复杂的对象映射或查询语言,而是直接利用ADO.NET的强大功能,通过扩展方法简化SQL执行。Dapper适合对性能要求高,且对数据库操作比较熟悉的情况。 在C# .NET中使用ORM时,主要涉及以下几个关键概念: ...
NHibernate集成.NET事务管理,支持ADO.NET事务和NHibernate自身的ISessionTransaction,确保数据一致性。 总结,NHibernate Core 3.2.0 GA版本是.NET开发中的强大ORM工具,它的丰富特性和灵活设计使得数据库操作变...
NHibernate 是一种面向对象关系映射(Object-Relational Mapping,ORM)框架,主要应用于 .NET 开发领域,类似于 Java 中的 Hibernate。ORM 框架的主要目标是将数据库中的表映射为对象,使开发者可以更专注于业务...
3. **执行数据库操作**:当通过Session对象执行如查询、插入、更新或删除等操作时,NHibernate会根据定义的映射规则自动转换为相应的SQL语句,并通过ADO.NET接口执行这些SQL语句。执行结果再被转换回对象模型,返回...
8. **事务管理(Transaction Management)**:NHibernate支持ADO.NET事务和NDBTM(NHibernate’s own Transaction Manager),可以根据应用场景选择合适的事务策略。 9. **性能优化(Performance Optimization)**...