NHibernate Step by Step:序篇 (轉)

原文作者:abluedog
很久以前,你可能習慣了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的開發樂趣。
 
注:
理論上講,o/r mapping(ORM)由於進行了反射、生成sql及框架運行的維護等等,性能是要比直接的數據庫操作稍微差一點,但是要考慮團隊開發中可能出現的蹩腳的sql語句,沒有考慮優化的架構等等可以直接影響ado.net性能的問題,而使用ORM工具,基礎的操作都有框架來完成,一個設計優良的框架足以彌補以上不足,況且使用ORM後而產生的生產力的大幅提高,更快的開發效率,足以讓人心動。
ORM框架的性能問題,可以去搜索一下hibernate與jdbc性能比較的文章,基本上都可以滿足一般的企業開發。
然而一些對性能或者實時性要求非常高的環境,這樣的項目,一般都不大會使用java/.net這樣的基於虛擬機的語言來開發,比如電信方面項目等等的核心部分,畢竟,都不能與c/c++來比較。
另外nhibernate與ADO.net和LINQ等性能比較參見相關資料。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章