惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
U
Unit 42
MyScale Blog
MyScale Blog
B
Blog
阮一峰的网络日志
阮一峰的网络日志
量子位
IT之家
IT之家
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Recent Announcements
Recent Announcements
V
Visual Studio Blog
G
Google Developers Blog
Last Week in AI
Last Week in AI
雷峰网
雷峰网
博客园 - 聂微东
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
J
Java Code Geeks
博客园 - 司徒正美
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏

博客园 - oo复oo

Asp.net Ajax 中的脚本错误: 'Sys'未定义 的解决方法 学习xml 之"实体"篇 - oo复oo - 博客园 该死的dudu加速器广告终于被清除了 第一次安装DNN 网站 网站总算安装成功了 开始行动了 .net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 一个基于.net Framework 2.0 的图形处理工具 贴一篇关于asp.net性能计数器的文章,供以后参考 你的.net 2.0 真的能与1.1 安全正确地运行在同一台电脑上吗? 小心Server Application Unavailable 错误 贴一篇关于asp.net性能计数器的文章,供以后参考 使用@Page指令的Src 属性 简化对老版本的 asp.net程序的维护 新年到,祝大家新年快乐 WebRequest 使用不当可能会造成线程阻塞 学习xml 之"刘姥姥进大观园" -----xml概述 学习xml 之" 给个理由先" 此gmail非彼gmail 在.net 中调用win32API :GetBitmapBits ,获取位图的颜色数组,发送给打印机。 通过串口编程控制打印机
Ado.net 与NHibernate的关系?
oo复oo · 2006-03-22 · via 博客园 - oo复oo
  

  看了许多人的文章,将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和数库库表的操作。实现了数据库表与业务对像的自动映射,并提供了数据对像缓存和各种事件机制。 有效解决了我们人工进行数据库和业务对像映射时的 代码量大的问题。缓存功能缓解了数据库映射所带来的性能问题。 让我们能够以比较小的代价实现更好的面向对像的数据库程序开发。