我的開發框架之ORM框架
今天我想分享一下我自己的ORM框架,雖然談不是很好,但我個人認為還是蠻好用的,跟大家分享交流一下。
首先說說我對現在主流的ORM框架的一些看法:
優點:
- 讓程式設計師不再關注資料庫細節,專心在業務邏輯上,程式設計師可以不懂資料庫就可以開發系統。
- 讓資料庫遷移變的非常方便,如果系統需要更改使用的資料庫,直接改配製就好了,不要再管不同資料庫之間的語法差異。
- 省時,可快速開發,因為不需要自己寫複雜的SQL語句,不需要封裝複雜的資料底層,這樣可以節省很多時間。
缺點:
- 我覺得不懂資料庫的程式設計師不是好程式設計師,ORM不能幫你生成所有的業務語句,有些複雜的生成不了,還是需要寫SQL,例如複雜的報表。
- 配製過於繁瑣,出錯後不好定位問題點在哪。
- 效能低,因為它內部是使用了大量反射,還有資料庫檢測,造成效能必然低下。
- 需要額外的學習成本,雖然不需要學習資料庫,但是需要學習ORM語句。
- 容易引起不規範開發,因為ORM可以在任何地方寫ORM語句然後呼叫開發,這樣對於初始程式設計師來說他們很可能在系統的任何地方亂丟ORM語句,這樣給維護帶來了很大的難度。
因為我一直都不看好這些ORM框架所以缺點寫多了點,可能還有些優點是我不知道的,路過的人要是知道可以給我留言,我再補上。
那現在來談一下我自己的ORM框架,之所以稱它為ORM框架是因為,它也達到了上面ORM框架的幾個優點。
首先我基於抽像資料操作層,寫了一套基於ADO.NET的抽像操作資料庫的方法DbHelper
然後基於這個DbHelper 我開發了抽象資料操作引擎,並擴充套件了不同的資料庫支援 這裡只顯示了mysql的,還有MSSQL,ACCESS其實所有支援ADO.NET的資料庫都可以擴充套件進來
這樣做了以後,我的框架就可以做到資料庫無關性了,我可以使用任何資料庫,甚至可以混達資料庫。
現在我再說說怎麼快速開發和讓程式設計師不用關注SQL語句。
對於程式設計師來說,沒有比看程式碼更直接的了,我先給大家看看程式碼:
這裡演示了 增刪改查方法,首先這裡我沒有寫一句SQL,也沒有ORM語句,寫法上應該比較直觀,我們資料模型進行了擴充套件,給欄位都加入了屬性。
如果我要設定一個欄位的值,我就會把它的IsValue設定為真,如果我要查詢一個欄位我就把它的IsColume設定為真,我個人理解這種方式更接近OOP思想,更直接更容易理解,至少我現在帶新人讓他們用這個能很快上手,幾乎沒壓力。
這樣也避免了初級程式設計師隨便寫SQL語句,同時也方便維護和管理,又能快速開發,最主要是效能很高,因為我沒用反射,也不需要ORM語句到SQL語句的翻譯,同時也可以定製只查詢出部分欄位(現在好像一些ORM達不到這個效果)。
那有人可能會說 你的實體模型肯定很複雜,要寫這個肯定很費時間,其實這句話對了一半,因為實體模型確實變複雜了,但並不費時間,因為我在上一篇部落格中有提到過,我的實體模型全都是自動生成出來的,根本不需要人工來操作,包括我的資料層的程式碼,它確實很大很複雜,但不需要人工處理,一步生成出來就直接可以用了。
好了,今天就介紹到這裡了,我的框架的具體細節後續我會慢慢的詳細介紹出來,有興趣的可以看看。同時歡迎大家對我的框架提出寶貴的意見。