Hibernate的优秀和在java平台的出色应用毋庸置疑,移植到.net上的NHibernate也是重量级ORM工具,各种开源的OR工具也多的不胜枚举,很多都很优秀,虽然.net3.0之后微软推出了Linq-to-Sql来作为主推的OR工具~但是3.0或者3.5毕竟还没有普及,现行开发中还是以.net2.0为主~(自行编写基础2.0的Linq应用的不包括~)
HQL作为Hibernate/NHibernate的查询语言,提供了完全面向对象的语言级查询功能~比起sql满天飞的情况,它的优势很明显,易于维护,易于复用,符合面向对象的思想~一个成功应用了ORM的项目,将找不到任何一个sql在代码层里~当然,作为一种映射关系,在达到灵活性的同时是需要付出一定的性能代价的~需要资源来维护这个映射关系,同时还存在的一些不可控的性能问题~记得以前有篇文章上一位项目经理谈到:只有在一个项目组的成员都清楚了解ORM的应用和所带来的性能问题的时候才会考虑在项目中实践ORM;
的确,ORM为我们自动的维护数据库,自动的生成sql语句~很可能一个提取用了很多条语句,或者一次提取取出过多的数据~如果不能很好的使用和控制~那么~性能将有会很大问题;
IOC容器则是ORM不得不提及的东西~控制反转,依赖注入,java中已是久负盛名的实践;(还没有使用过,只是了解原理 )
先介绍几个我所比较了解的ORM框架:
Hibernate 不用说了 大家都听说过
IBaits:半自动化的工具,需要手动处理一些操作,但是这样还是提供了很大的灵活性,可控
NBear :博客园的Teedy开发的,现在版本到了V3,反响还是不错的,博客园的ORM貌似就是用这个框架
NetTiers 一个朋友推荐的,不过看了感觉不是很来劲,所以没有去多看有兴趣的可以看看这篇介绍:
http://www.cnblogs.com/iCaca/archive/2007/07/10/812632.aspx
SubSonic也是一个很不错的框架
Castle ActiveRecord 一个支持多个平台的框架,在ruby rails有很出色应用;这也是这几天项目中在实践的架构~