很久以前,你可能习惯了connection.open,command.execute("select...")这样的代码,写啊写啊,你开始不停地copy/paste,因为数据库的操作太雷同了,还好,粘粘贴贴倒也凑合,然后有一天客户说他们要用oracle,于是你开始抱着本oracle开发指南狂啃pl/sql,你开始试验调用oracle的存储过程该怎么写,参数是用@还是?或者是:,取个blob游标又要咋写,你纳闷为啥这不同的数据库sql区别咋这么大呢?不都是号称符合啥sql几几的标准吗?你的头开始痛了,你开始写不同的DAL,代码与十指齐飞,脑袋昏昏天黑黑——又加班了!!这次第,怎一个愁字了得!!
然后你觉得再也不能这样过了,再也不能这样活了,你开始用DAAB,后来升级到Enterprise Library,恩,不错,代码好象少了,后来再加个Code Smith,恩,不错,自动生成代码,自己敲键盘少了,虽然你还得在不同的数据库间挣扎,还得把取出来的数据一点一点地填到你的实体类里,但是目前看上去还不赖,可以忙里偷闲泡杯两块八一包的劣质茶叶咂吧咂吧你那被劣质显示器辐射的开裂的嘴唇了。但是你觉得还不够,你在想,是否有Code Neo,或者干脆来个Code Matrix,整个DAL都不用自己写了,自动把数据库的数据填到自己的实体类里,然后对这个对象进行操作就行了,剩下的CRUD全部有这个Code Matrix来完成,达不达??
神啊,救救我吧……
“当当当当……“,O/R Mapping来到了大家的眼前。
O/R Mapping全称是object/rational mapping,即对象/关系数据库映射,意思是对象模型和关系模型的映射,也就是把我们常见的以对象模型表示的对象映射到关系模型上去,当然,这个关系模型我们常常指的是目前大部分主流的关系数据库,如oracle/sqlserver等等。基于.Net来说,o/r mapping就是将我们的.Net类映射到数据库中指定的表上,由O/R Mapping框架帮我们实现object<-->table之间的交互,我们完全不再需要写sql语句(当然不是绝对的),也不再关心背后用的是那种数据库,你只需要定义好对象和数据库该如何交互,剩下的,全部由O/R Mapping的框架来解决,你只需要如下代码即可:
Customer cust = framework.Get(...);
cust.Name = "newname";
framework.Save(cust);
或者:
framework.Delete(cust);
ok!!手起键盘落,整个世界清净了!!
是不是很动心啊??
ok,正式介绍今天的主角——Hibernate!!
Hibernate是一个目前应用的最广泛的开放源代码的对象关系映射框架,它对Java的JDBC(类似于ADO.Net)进行了非常轻量级的对象封装,使得程序员可以随心所欲的使用对象编程思维来操纵数据库,目前在国内Java开发界已经颇为流行,Hibernate+Spring往往是很多Java公司招聘的要求。而NHibernate,顾名思义,如同NUnit,NAnt一样,是基于.Net的Hibernate实现,但是目前介绍NHibernate的资料非常少,缺少一个系统完整的教程来全面的展现和深入NHibernate,而且现在NHibernate的文档又残缺不全,少的可怜,很多NHibernate的学习者往往都是通过Hibernate的文档来学习,但是毕竟不是所有的.Net开发者都熟悉Java,也不是所有的人都有精力有时间去学习Java,所以,我准备开始一个Step by Step的NHibernate教程,以便有兴趣的朋友能够快速的熟悉NHibernate,能够更快地体验NHibernate的开发乐趣。
本文链接:http://www.cnblogs.com/abluedog/archive/2006/04/15/375676.html