日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大话细说ORM -----(转)

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大话细说ORM -----(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是ORM?

????? ORM,即對象關系映射(Object Relational Mapping)表示一種技術,用來把(對象模型)表示的對象映射到基于SQL的(關系模型)數據結構中去。

????? 說得通俗點,就是在對象的屬性與關系表的字段之間建立一套規則,來實現數據的交互。我們只需使用對象提供給我們的接口來完成數據操作,而無需關心數據到底是如何被查詢,被插入的,省去了我們寫sql語句的麻煩。一般一個關系表對應兩個類,即實體類和操作類。

如何實現ORM?

???? ORM,只是一個概念,不是一種實現。我們完全可以在這個概念上實現自己的ORM框架。而實現這個框架的核心是反射(reflect)技術。通過它,我們可以根據對象屬性和表字段名的關系,獲取和設置對象的字段值,或者構造sql語句進行表操作。

???? 很多語言中,都有自己的比較成熟的ORM框架,拿來即可。Java中的Hibernate,C#中的NHibernate,C++中的ODB,Android中的ormlite、db4o。當然,它們各自的封裝程度不同,為了重用和方便調用,有的(如odb,hibernate)需要你自己配置和進行進一步的封裝,有的(ormlite、db4o)則封裝得很好,你只需建立一個對象,框架會自動為你生成關系表和操作類,很方便。

???? 不論是別人的還是自己的框架,為了保持接口的統一,降低耦合性,我們通常對數據操作類做如下接口約定,

???? public class TableName{//使用表名稱作為操作類名稱

????????? ? /*item=Tb前綴+TableName,即實體類*/

??????????? item GetById(id),?????????????????????? //按id獲取表中的一行記錄

??????????? List<item> GetByClause(clause),//按條件子句獲取表中的記錄

??????????? List<item> GetAll(),?????????????????? //獲取表中的所有記錄

??????????? List<item> GetByPage(start,count,clause,sort,dir),//按頁獲取

??????????? Insert(item),?? //插入

??????????? Update(item),//更新

??????????? Delete(id)???? //刪除

?????? };//end of class

以上接口僅供參考,讀者可以根據自己的業務場景建立自己的約束,這樣可以方便的更換Orm框架,并為代碼生成器的使用作鋪墊。

批量ORM

重復勞動是程序員的天敵,要為幾十個表建立映射關系,是很痛苦的。是時候推出,我們的利器,代碼生成器了。代碼生成器可以做得很復雜,多數據庫,多語言,組件、模板化。也可以很簡單,VS里的T4引擎就是一個簡單的代碼生成器。有了它,我們就可以很容易為上百個表創建配置、映射、操作對象。如果操作邏輯或者表明發生變動,Once agin即可。當然,代碼生成器的作用不僅于此,任何基于數據的批處理問題,都可以交給它來完成。

轉載于:https://www.cnblogs.com/shao-shao/articles/3543453.html

總結

以上是生活随笔為你收集整理的大话细说ORM -----(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。