亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nhibernate與代碼生成的示例分析

發布時間:2021-12-01 09:31:04 來源:億速云 閱讀:139 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“Nhibernate與代碼生成的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Nhibernate與代碼生成的示例分析”這篇文章吧。

在向大家詳細介紹Nhibernate之前,首先讓大家了解下ORM和代碼生成,然后全面介紹Nhibernate。

原來一直使用代碼生成,包括CodeSmith和CodeMatic.最近打算系統學習一下Nhibernate,經過簡單的一點探索,發現ORM和代碼生成真是個有千秋。

本文側重比較一下ORM和代碼生成二者的優缺點,讓二者華山一比高下,目的為去偽存真,使二者能夠相輔相成。從而更好的提高開發效率。

本文從下面三個層面對ORM(以NHibernate為首發的O陣營) 和代碼生成(以CodeMatic為首發的C陣營)進行比較:

1.針對數據庫二者的架構層次上的異同。

2.針對應用程序二者在使用和配置上的異同。

3.針對業務邏輯二者在對變化和復雜度上支持度的異同。

下面就具體針對這三個層面做一下具體分析,這些分析都來源于自己開發中的一些經驗和心得,有些是正確的,有些也存在這樣那樣的問題。寫出來,希望的也只是能拋磚引玉,得到更多朋友,兄弟的幫助和支持。

1.針對數據庫二者在架構層次上異同

ORM針對數據庫是由上而下的關系,也就是說ORM并不依賴于數據庫。他可以完全從關系數據庫中將程序員解放出來,需要程序員小心呵護的是傳遞給nhibernate的persistent object.這看起來更加OO,而代碼生成恰恰相反,代碼生成依賴于關系數據庫。它總結數據庫操作的一些共性,將本來需要程序員手寫的代碼自動生成出來。從OO的角度來說,代碼生成的過程并不體現OO思想,但根據模版或者軟件作者的一些邏輯。生成出來的代碼卻可能具有很好的OO思想。針對數據庫來說,ORM是自頂向下的,代碼生成則是自下而上。二者方向恰好相反。

2.針對應用程序二者在使用和配置上的異同

nhinernate的使用需要在原有系統上添加對nhibernate.dll和其他一些相關的dll的引用,而代碼生成則不然,代碼生成是在另外的一個軟件中,通過指定數據庫來生成用于操作數據庫的文件,將這些文件添加到項目中的時候才可以正常使用。nhibernate最讓人頭疼的就是配置和映射文件的編寫。而代碼生成,如果需要完成復雜的邏輯和自定義的業務,需要編寫CodeSmith等軟件的模版,這些模版的編寫也不是一件簡單的事情。從使用和配置上看,二者的異同在于使用方法,引用方法,配置文件nhibernate系統內需要添加相關引用,需要編寫大量的配置和映射文件。codematic系統外不需要添加引用,業務簡單時不需要配置,復雜時需要編寫自定義模版 bbs.j2mehome.com

3.針對業務邏輯二者在對變化和復雜度上支持度的異同

假如原有一個User表,這個表已經運行了一段時間。但目前需要在User表里面添加一個可為null的字段:BirthDay,二者對此需求的響應各自是應該是怎么樣的呢?

數據庫改動 配置改動 代碼更改nhibernate 無需 需要映射文件中添加對BirthDay的映射 更改User類,添加屬性BirthDaycodematic 需要在User表里面添加一個BirthDay字段 不需要更改 ***使用狀態下需要從數據層到業務邏輯層重新生成代碼,如果以前有改動,則需要手動添加BirthDay向伽相關代碼針對于單表操作,二者都比較簡單,但是當業務變得復雜的時候,二者在表現力如何呢?比如現在有這樣一種應用環境,計算和維護職員和工資:
1.列出所有職員。
2.列出某個職員的某月的工資信息。
3.統計某個員工在第2個季度的總工資。
4.計算上半年公司支付給員工的總工資。其中包括已離職人員的工資。

在這樣一種應用環境下,分別討論二者如何應付數據表 業務對象 配置文件業務對象的使用nhibernate 無需創建 手動編寫User,Salary業務對象。 需要編寫配置文件,標示業務對象的主從關系在二者差生圍度和關聯時,內置支持codematic 需要創建User和Salary表,并指定主從 不需 不需產生關聯和圍度時,需要手工更改數據底層和上層業務代碼。

總結,ORM和代碼生成二者各有各自的好處,但綜合考慮ORM更符合OO的口味,而代碼生成則比較靈活,可以應用到除了數據庫操作的其他方面。比如生成nhibernate需要的映射文件等。加上原有的URM和數據建模,幾者共用,開發效率一定會有較大的提高。

以上是“Nhibernate與代碼生成的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西宁市| 东阿县| 花垣县| 彭山县| 临夏市| 鹤峰县| 岱山县| 民丰县| 曲水县| 扬州市| 祁连县| 化德县| 邻水| 桑日县| 河北省| 应城市| 江达县| 荃湾区| 霍林郭勒市| 长葛市| 洪江市| 茌平县| 商城县| 江西省| 仙居县| 灵丘县| 建平县| 乌恰县| 大渡口区| 公安县| 辽阳县| 化德县| 铜川市| 县级市| 南宁市| 石台县| 镇安县| 肇源县| 色达县| 侯马市| 长兴县|