欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Nhibernate分析之華山論劍篇

系統 2407 0

原來一直使用代碼生成,包括CodeSmith和天平兄的CodeMatic。最近打算系統學習一下Nhibernate,經過簡單的一點探索,發現ORM和代碼生成真是個有千秋。本文側重比較一下ORM和代碼生成二者的優缺點,讓二者華山一比高下,目的為去偽存真,使二者能夠相輔相成。從而更好的提高開發效率。
本文從下面三個層面對ORM(以NHibernate為首發的O陣營) 和代碼生成(以CodeMatic為首發的C陣營)進行比較:
1)針對數據庫二者的架構層次上的異同
2) 針對應用程序二者在使用和配置上的異同
3) 針對業務邏輯二者在對變化和復雜度上支持度的異同。
下面就具體針對這三個層面做一下具體分析,這些分析都來源于自己開發中的一些經驗和心得,有些是正確的,有些也存在這樣那樣的問題。寫出來,希望的也只是能拋磚引玉,得到更多朋友,兄弟的幫助和支持。
1) 針對數據庫二者在架構層次上異同
首先看一下下面這張圖:
Nhibernate分析之華山論劍篇
ORM針對數據庫是由上而下的關系,也就是說ORM并不依賴于數據庫。他可以完全從關系數據庫中將程序員解放出來,需要程序員小心呵護的是傳遞給nhibernate的persistent object。這看起來更加OO,而代碼生成恰恰相反,代碼生成依賴于關系數據庫。它總結數據庫操作的一些共性,將本來需要程序員手寫的代碼自動生成出來。從OO的角度來說,代碼生成的過程并不體現OO思想,但根據模版或者軟件作者的一些邏輯。生成出來的代碼卻可能具有很好的OO思想。針對數據庫來說,ORM是自頂向下的,代碼生成則是自下而上。二者方向恰好相反。
2)針對應用程序二者在使用和配置上的異同
nhinernate的使用需要在原有系統上添加對nhibernate.dll和其他一些相關的dll的引用,而代碼生成則不然,代碼生成是在另外的一個軟件中,通過指定數據庫來生成用于操作數據庫的文件,將這些文件添加到項目中的時候才可以正常使用。nhibernate最讓人頭疼的就是配置和映射文件的編寫。而代碼生成,如果需要完成復雜的邏輯和自定義的業務,需要編寫CodeSmith等軟件的模版,這些模版的編寫也不是一件簡單的事情。從使用和配置上看,二者的異同在于

使用方法 引用方法 配置文件
nhibernate 系統內 需要添加相關引用 需要編寫大量的配置和映射文件。
codematic 系統外 不需要添加引用 業務簡單時不需要配置,復雜時需要編寫自定義模版
3)針對業務邏輯二者在對變化和復雜度上支持度的異同
假如原有一個User表,這個表已經運行了一段時間。但目前需要在User表里面添加一個可為null的字段:BirthDay,二者對此需求的響應各自是應該是怎么樣的呢?
數據庫改動 配置改動 代碼更改
nhibernate 無需 需要映射文件中添加對BirthDay的映射 更改User類,添加屬性BirthDay
codematic 需要在User表里面添加一個BirthDay字段 不需要更改 最佳使用狀態下需要從數據層到業務邏輯層重新生成代碼,如果以前有改動,則需要手動添加BirthDay向伽相關代碼
針對于單表操作,二者都比較簡單,但是當業務變得復雜的時候,二者在表現力如何呢?比如現在有這樣一種應用環境,計算和維護職員和工資,需求:1)列出所有職員 2)列出某個職員的某月的工資信息 3) 統計某個員工在第2個季度的總工資。4)計算上半年公司支付給員工的總工資。其中包括已離職人員的工資。
在這樣一種應用環境下,分別討論二者如何應付
數據表 業務對象 配置文件 業務對象的使用
nhibernate 無需創建 手動編寫User,Salary業務對象。 需要編寫配置文件,標示業務對象的主從關系 在二者差生圍度和關聯時,內置支持
codematic 需要創建User和Salary表,并指定主從 不需 不需 產生關聯和圍度時,需要手工更改數據底層和上層業務代碼
總結,ORM和代碼生成二者各有各自的好處,但綜合考慮ORM更符合OO的口味,而代碼生成則比較靈活,可以應用到除了數據庫操作的其他方面。比如生成nhibernate需要的映射文件等。加上原有的URM和數據建模,幾者共用,開發效率一定會有較大的提高。

Nhibernate分析之華山論劍篇


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美精品一区二区三区在线 | chengrenzaixian | 国产精品视频免费观看 | 99久久99热久久精品免费看 | 国产精品69久久久久水密桃 | 九九精品视频在线播放 | 日韩一区二区在线视频 | 国产精品国产亚洲精品不卡 | 在线观看h片 | 免费看黄的视频网站 | 天堂在线免费视频 | 久久久久久久久淑女av国产精品 | 午夜视频在线观看免费观看在线观看 | 在线观看国产视频 | av一区二区三区四区 | 操舔 | 久久一区 | 麻豆影视在线 | 一区二区三区视频免费观看 | jizz丝袜老师 | 成人亚洲A片V一区二区三区婷婷 | 草草视频在线 | 成年人在线观看视频网站 | 日韩第一 | 天天摸天天爽天天澡视频 | 日韩视频在线一区二区 | 亚洲美女一区二区三区 | 欧美五月激情 | 特级毛片8级毛片免费观看 亚洲精品不卡 | 欧洲一级毛片 | 欧美成人一区在线 | 丁香六月综合 | 欧美一区二区三区播放 | 国产网站在线播放 | 国产亚洲视频在线 | 五月色开心婷婷丁香在线 | 亚洲精品人成网在线播放影院 | 九一在线观看 | 日本亚洲国产精品久久 | 91精品国产色综合久久 | 精品国产免费一区二区三区 |