手把手教你寫個ORM(一)

2021-08-29 06:14:10 字數 1155 閱讀 6267

這是手把手系列的第一篇,希望能夠開門紅,高手們可以離開了,菜鳥們請繼續

這裡準備把乙個類似ibaties的半自動orm的設計和實現過程一步步地剖析出來,供菜鳥參考,功能很簡單,甚至我只能用簡陋來形容了,不過把一些關鍵點破後,希望後浪們不用再花功夫摸索了。

為什麼我們要重**明輪子?因為不親自經歷一遍發明輪子的過程就無法發明出風火輪^_^

準備知識:

首先要會用c#,如果不會請先去書店買書。

要熟悉ado.net,我們不會去重頭設計oledb,所以所有的操作最終都是ado.net去完成的

起碼知道什麼是xml,我們的配置檔案依賴這個東西

最好會反射,如果現在發現以上提到的有不會的就去google搜尋一番吧,google是最好的老師,除了教會我寫程式,還教會了我如何做可樂雞翅泡妹妹,god bless google。

在萬事俱備的時候不要忘記在你的機器上安裝vs2005,本著與時俱進的原則,我們還是放棄做1.1版本的了,畢竟范型可以讓**更加的簡潔。

開啟你的vs2005,新建乙個專案,右鍵單擊專案的屬性,在名字空間裡寫上你的大名,好了,現在就要開始正式啟程來完成你自己的orm framework了。如果你參照本文做出來了,恭喜,本年度最佳菜鳥非你莫屬了。再次重申,在高手眼裡這是個很弱質的重**明的輪子,如果你發明過了,就不要看啦,浪費時間的。

好了,建好了專案也不要興奮過頭,我們現在開始來規劃規劃,俗話說,磨刀不誤砍柴工,先謀後動才是王道。

首先,我們要確定這個project的scope,不要一開始就信心爆繃發誓要做個牛鼻轟轟天下第一宇內無雙的東西出來,那樣子的思想趁早打掉,我們只是實現乙個demo而已。所以很多華而不實的東西都要去掉,我們用ibaties作為藍本,所以我們需要對每個類提供乙個配置檔案,並且需要在配置檔案作了修改的時候自動載入而不用重新啟動服務。這裡ibaties的配置檔案我們覺得還是過於複雜,於是作出再次簡化,我們只配置sqlmap,但是物件的對映我們通過attribute在實體類裡面配置,resultmap也省了,怎麼來還是怎麼去吧。快取機制還是要保留,畢竟要演示一下,lazyloading就算了,需要aop,我們暫時不去理會它,自己呼叫一次**就load了,我決的比lazyloading使用,太lazy了不一定就簡單。

ok,就這麼簡單,我們這裡暫時不歸納需求,作為乙個見習架構設計師來說需要多練習對需求的把握,這個就權且當作作業了。有興趣的小菜可以寫寫看,明天我們繼續設計

手把手教你寫個ORM(一)

這是手把手系列的第一篇,希望能夠開門紅,高手們可以離開了,菜鳥們請繼續 這裡準備把乙個類似ibaties的半自動orm的設計和實現過程一步步地剖析出來,供菜鳥參考,功能很簡單,甚至我只能用簡陋來形容了,不過把一些關鍵點破後,希望後浪們不用再花功夫摸索了。為什麼我們要重 明輪子?因為不親自經歷一遍發明...

手把手教你寫ORM(三)

昨天處於暈死狀態,少寫了乙個元件,還需要乙個元件用來專門管理cache的,這裡說道為什麼要分這麼多元件,其實這是習慣問題,很多人喜歡寫乙個很大的dll,不過我比較喜歡拆分,小粒度的專案比較好管理和單獨測試,把用單元測試驗證好了的小組件湊起來除錯和寫成乙個巨大的dll慢慢一行行的追蹤 肯定是前者更加舒...

手把手教你寫ORM(五)

cmmi是魔鬼 繼續上面的內容,這裡我們要實現乙個外掛程式的結構來動態從外部載入資料元件,其好處不用我再多說了,可能有人會發問,外掛程式是aop的拿手好戲你咋個不用?真是暈死,就2行 犯得著引入那麼大一堆東西進來麼?外掛程式,首先要定義介面,當然通過refrection我們無所不能,但是有乙個定義好...