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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

什么是ORM?

????? ORM,即對(duì)象關(guān)系映射(Object Relational Mapping)表示一種技術(shù),用來把(對(duì)象模型)表示的對(duì)象映射到基于SQL的(關(guān)系模型)數(shù)據(jù)結(jié)構(gòu)中去。

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

如何實(shí)現(xiàn)ORM?

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

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

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

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

????????? ? /*item=Tb前綴+TableName,即實(shí)體類*/

??????????? 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

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

批量ORM

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

轉(zhuǎn)載于:https://www.cnblogs.com/shao-shao/articles/3543453.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。