论坛首页 Microsoft .Net版 C#

HQL该退休了吧?

浏览 786 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-01-28
NHibernate是非常有名的ORM框架,而LINQ则是微软将在C# 3.0中将推出的语言集成查询技术,许多人也将LINQ叫做微软的ORM。

这两项技术都是ORM,看起来似乎是冲突的,如果加在一起变成了什么?

答案是:NHLINQ

为什么要将NH和LINQ结合起来?在那篇帖子中,作者列举了三大原因:

  1. 在DLINQ中,虽然可以在语言层级定义查询逻辑。但是依然没有将数据库持久化数据映射为领域对象,所以还是一种针对数据库的编程模型。而NH则可以直接将关系数据映射为领域模型,这是DLINQ的主要问题。
  2. DLINQ不支持继承类的映射。
  3. NH已经提供了许多帮助进行领域面向对象建模的特征。而DLINQ目前还无法拥有。


而NHLINQ的好处则是:

  1. 类型安全的查询,并且能使用智能提示功能!这样可以不用学习HQL了,这是我认为最大的好处。
  2. 能获得所有NH所拥有的能力。
  3. 假如你已经从数据库中查询出了一个数据集,那么可以使用LINQ来进行过滤,排序和分页操作。
  4. 从原理上来说,DLINQ是将Lambda查询表达式解析为SQL语句:DLINQ => SQL,而NHLINQ则是将Lambda查询表达式解析为HQL语句:NHLINQ => HQL。
  5. 更容易做unit test.
  6. 更完美的查询--不单是对数据库,而且是对数据集和XML的统一查询.
  7. 可以摆脱hibernate的贫血模型---有待考证.


是不是很酷?有许多人认为,开源社区做的东西总会被微软给抹杀,比如DLINQ出来的时候,许多人喊NH等ORM框架都要完蛋了。但是开源社区的智慧是无穷的,并且和微软也不是你死我活的关系。反倒应该是一种互相补充的关系。假如完全让开源社区做一个.net framework这样大的东西,肯定比较困难。而开源社区的这些闪烁的创造性思维火花也为沉闷的软件开发带来了很多灵气。也保持了我们这些没有多少机会能做创造性工作的普通程序员的一些创作热情!
   
时间:2008-01-28
像nhibernate这样的移值框架今后主要适合java/.net双栖人士,如果对于只使用.net的话,得确会使用的人越来越少,更何况ado.net entity framework,这才是ms真正意义上的orm

学习的成本是最高的,因此,如果能重用知识,才会有最大的产出
   
0 请登录后投票
论坛首页 Microsoft .Net版 C#

跳转论坛:
JavaEye推荐