對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)和方法
【專利摘要】本發(fā)明提供了一種對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng),包括:攔截單元,用于攔截根據(jù)客戶端向服務(wù)器發(fā)送的數(shù)據(jù)請(qǐng)求生成的映射請(qǐng)求;判斷單元,用于判斷是否需為映射請(qǐng)求提供動(dòng)態(tài)映射支持;解析單元,用于在需提供動(dòng)態(tài)映射支持時(shí),根據(jù)映射請(qǐng)求解析映射參數(shù);動(dòng)態(tài)映射單元,用于根據(jù)映射參數(shù)將對(duì)象關(guān)系映射系統(tǒng)中的對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射;訪問單元,用于基于動(dòng)態(tài)映射后的對(duì)象模型進(jìn)行數(shù)據(jù)訪問,將訪問結(jié)果反饋至客戶端。相應(yīng)地,本發(fā)明還提供了一種對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法。本發(fā)明從橫、縱兩個(gè)維度上對(duì)對(duì)象模型提供運(yùn)行時(shí)動(dòng)態(tài)代理對(duì)象關(guān)系映射系統(tǒng)的方法,能夠與傳統(tǒng)對(duì)象關(guān)系映射系統(tǒng)靜態(tài)映射方案良好對(duì)接。
【專利說明】對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,具體而言,涉及一種對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)和一種對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法。
【背景技術(shù)】
[0002]在面向?qū)ο?00)軟件產(chǎn)品設(shè)計(jì)中,設(shè)計(jì)者們?cè)诿鎸?duì)諸如MySQL、MSSQL、ORACLE這類由關(guān)系數(shù)據(jù)庫(kù)組成的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)時(shí),對(duì)象關(guān)系映射方案(ORM,Object/Relat1nMapping)逐漸成為主流技術(shù)。ORM系統(tǒng)管理著關(guān)系數(shù)據(jù)模型與對(duì)象模型(Object Model)的關(guān)系,通常關(guān)系數(shù)據(jù)模型(NRDM)與對(duì)象模型——對(duì)應(yīng),NRDM中一張表的結(jié)構(gòu)對(duì)應(yīng)對(duì)象模型中一個(gè)實(shí)體類的結(jié)構(gòu),表中的字段則對(duì)應(yīng)實(shí)體對(duì)象的屬性,表中的一行記錄又對(duì)應(yīng)著一個(gè)實(shí)體對(duì)象(Entity 0bject)。從而,ORM系統(tǒng)的對(duì)象模型靈活地對(duì)接了關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),隔離了關(guān)系數(shù)據(jù)模型。開發(fā)人員無需關(guān)注關(guān)系數(shù)據(jù)模型與對(duì)象模型的矛盾,只需在數(shù)據(jù)訪問層(DAO)傳遞對(duì)象模型,ORM會(huì)智能地把對(duì)象模型匹配到具體的關(guān)系數(shù)據(jù)模型上,觸發(fā)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行數(shù)據(jù)訪問請(qǐng)求。如今業(yè)界也有很多成熟并且被廣泛應(yīng)用的ORM映射方案,例如Hibernate、MyBatis、Apache OJB等。它們面對(duì)處理對(duì)象模型相對(duì)固定的模式時(shí),完全能夠智能地提供基于對(duì)象模型的ORM映射方案,因?yàn)樗鼈儗㈥P(guān)系數(shù)據(jù)模型與對(duì)象模型的對(duì)應(yīng)關(guān)系在ORM系統(tǒng)中進(jìn)行了約定配置(聲明式配置),也就是所謂的靜態(tài)映射。然而,隨著企業(yè)應(yīng)用不斷的發(fā)展,商業(yè)需求對(duì)ORM系統(tǒng)的映射方案不再停留在靜態(tài)映射的層面上,面對(duì)海量用戶數(shù)據(jù)以及高訪問量的大型企業(yè)應(yīng)用,許多系統(tǒng)采用了分庫(kù)分表的架構(gòu),部分應(yīng)用還存在系統(tǒng)上線后期,客戶自定義字段的需求。如果一個(gè)系統(tǒng)根據(jù)商業(yè)需求采用了分表策略(例如,電子商務(wù)系統(tǒng)通常對(duì)用戶訂單相關(guān)表采用分表存儲(chǔ)),則意味著自身的ORM系統(tǒng)必須支持一個(gè)對(duì)象模型對(duì)應(yīng)多個(gè)關(guān)系數(shù)據(jù)模型;針對(duì)后期客戶自定義字段也意味著需要修改ORM系統(tǒng)中的關(guān)系數(shù)據(jù)模型以及實(shí)體對(duì)象模型,甚至修改關(guān)系數(shù)據(jù)庫(kù)中表結(jié)構(gòu),遷移舊數(shù)據(jù)等繁瑣的工作。那么此時(shí)傳統(tǒng)的ORM靜態(tài)映射方案就不再那么智能,這就需要提供一種動(dòng)態(tài)映射的技術(shù)方案。
【發(fā)明內(nèi)容】
[0003]考慮到相關(guān)技術(shù)中出現(xiàn)的技術(shù)問題,本發(fā)明所要解決的技術(shù)問題在于,提供一種對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理技術(shù),支持動(dòng)態(tài)映射且簡(jiǎn)單可行。
[0004]有鑒于此,根據(jù)本發(fā)明的一個(gè)方面,提供了一種對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng),包括:攔截單元,用于攔截根據(jù)所述客戶端向服務(wù)器發(fā)送的數(shù)據(jù)請(qǐng)求生成的映射請(qǐng)求;判斷單元,用于判斷是否需為所述映射請(qǐng)求提供動(dòng)態(tài)映射支持;解析單元,用于在需提供所述動(dòng)態(tài)映射支持時(shí),根據(jù)所述映射請(qǐng)求解析映射參數(shù);動(dòng)態(tài)映射單元,用于根據(jù)所述映射參數(shù)將所述對(duì)象關(guān)系映射系統(tǒng)中的對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射;訪問單元,用于基于動(dòng)態(tài)映射后的對(duì)象模型進(jìn)行數(shù)據(jù)訪問,將訪問結(jié)果反饋至所述客戶端。
[0005]在需為映射請(qǐng)求提供動(dòng)態(tài)映射支持,本發(fā)明可解析映射參數(shù),根據(jù)映射參數(shù)對(duì)對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射,并與原對(duì)象關(guān)系映射系統(tǒng)進(jìn)行良好對(duì)接,簡(jiǎn)單可行。
[0006]在上述技術(shù)方案中,優(yōu)選的,所述動(dòng)態(tài)映射單元可以包括:映射對(duì)象更換子單元,用于在所述映射參數(shù)包含指定關(guān)系數(shù)據(jù)模型的名稱和對(duì)象模型的名稱時(shí),在所述對(duì)象關(guān)系映射系統(tǒng)中,將所述對(duì)象模型映射至所述指定關(guān)系數(shù)據(jù)模型,所述對(duì)象關(guān)系映射系統(tǒng)基于動(dòng)態(tài)映射后的所述對(duì)象模型,對(duì)所述指定關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
[0007]可以在橫向方向上更改對(duì)象模型的映射對(duì)象,避免一個(gè)對(duì)象模型對(duì)應(yīng)多個(gè)關(guān)系數(shù)據(jù)模型的復(fù)雜映射關(guān)系,實(shí)現(xiàn)橫向動(dòng)態(tài)映射。
[0008]在上述技術(shù)方案中,優(yōu)選的,所述動(dòng)態(tài)映射單元可以包括:屬性更新子單元,用于在所述映射參數(shù)包含所述對(duì)象模型的更新屬性時(shí),根據(jù)所述更新屬性將擴(kuò)展字段寫入與所述對(duì)象模型對(duì)應(yīng)的擴(kuò)展關(guān)系數(shù)據(jù)模型中,所述對(duì)象關(guān)系映射系統(tǒng)基于更新屬性的所述對(duì)象模型,對(duì)與所述對(duì)象模型對(duì)應(yīng)的原關(guān)系數(shù)據(jù)模型和所述擴(kuò)展關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
[0009]可以在縱向方向上實(shí)現(xiàn)對(duì)象模型的屬性的更新并相應(yīng)地將對(duì)應(yīng)的擴(kuò)展字段寫入對(duì)應(yīng)的擴(kuò)展關(guān)系數(shù)據(jù)模型中,無需修改原對(duì)象關(guān)系映射系統(tǒng)中的原關(guān)系數(shù)據(jù)模型和實(shí)體對(duì)象模型,實(shí)現(xiàn)縱向動(dòng)態(tài)映射。
[0010]在上述任一技術(shù)方案中,優(yōu)選的,還可以包括:適配器,用于使經(jīng)過動(dòng)態(tài)映射的對(duì)象模型與關(guān)系數(shù)據(jù)模型適配所述對(duì)象關(guān)系映射系統(tǒng)。
[0011]通過適配器可使對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)與原對(duì)象關(guān)系映射系統(tǒng)良好對(duì)接,保證了系統(tǒng)風(fēng)格的一致性,也便于后期維護(hù)。
[0012]在上述技術(shù)方案中,優(yōu)選的,所述判斷單元根據(jù)預(yù)設(shè)動(dòng)態(tài)映射數(shù)據(jù)范圍,判斷是否為所述映射請(qǐng)求提供所述動(dòng)態(tài)映射支持。
[0013]根據(jù)本發(fā)明的另一方面,還提供了一種對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法,包括:攔截根據(jù)所述客戶端向服務(wù)器發(fā)送的數(shù)據(jù)請(qǐng)求生成的映射請(qǐng)求;判斷是否需為所述映射請(qǐng)求提供動(dòng)態(tài)映射支持;在需提供所述動(dòng)態(tài)映射支持時(shí),根據(jù)所述映射請(qǐng)求解析映射參數(shù);基于所述映射參數(shù)將所述對(duì)象關(guān)系映射系統(tǒng)中的對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射;所述對(duì)象關(guān)系映射系統(tǒng)基于動(dòng)態(tài)映射后的對(duì)象模型進(jìn)行數(shù)據(jù)訪問,將訪問結(jié)果反饋至所述客戶端。
[0014]在需為映射請(qǐng)求提供動(dòng)態(tài)映射支持,本發(fā)明可解析映射參數(shù),根據(jù)映射參數(shù)對(duì)對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射,并與原對(duì)象關(guān)系映射系統(tǒng)進(jìn)行良好對(duì)接,簡(jiǎn)單可行。
[0015]在上述技術(shù)方案中,優(yōu)選的,在所述映射參數(shù)包含指定關(guān)系數(shù)據(jù)模型的名稱和對(duì)象模型的名稱時(shí),在所述對(duì)象關(guān)系映射系統(tǒng)中,將所述對(duì)象模型映射至所述指定關(guān)系數(shù)據(jù)模型;所述對(duì)象關(guān)系映射系統(tǒng)基于動(dòng)態(tài)映射后的所述對(duì)象模型,對(duì)所述指定關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
[0016]可以在橫向方向上更改對(duì)象模型的映射對(duì)象,避免一個(gè)對(duì)象模型對(duì)應(yīng)多個(gè)關(guān)系數(shù)據(jù)模型的復(fù)雜映射關(guān)系,實(shí)現(xiàn)橫向動(dòng)態(tài)映射。
[0017]在上述技術(shù)方案中,優(yōu)選的,在所述映射參數(shù)包含所述對(duì)象模型的更新屬性時(shí),根據(jù)所述更新屬性將擴(kuò)展字段寫入與所述對(duì)象模型對(duì)應(yīng)的擴(kuò)展關(guān)系數(shù)據(jù)模型中;所述對(duì)象關(guān)系映射系統(tǒng)基于更新屬性的所述對(duì)象模型,對(duì)與所述對(duì)象模型對(duì)應(yīng)的原關(guān)系數(shù)據(jù)模型和所述擴(kuò)展關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
[0018]可以在縱向方向上實(shí)現(xiàn)對(duì)象模型的屬性的更新并相應(yīng)地將對(duì)應(yīng)的擴(kuò)展字段寫入對(duì)應(yīng)的擴(kuò)展關(guān)系數(shù)據(jù)模型中,無需修改原對(duì)象關(guān)系映射系統(tǒng)中的原關(guān)系數(shù)據(jù)模型和實(shí)體對(duì)象模型,實(shí)現(xiàn)縱向動(dòng)態(tài)映射。
[0019]在上述任一技術(shù)方案中,優(yōu)選的,通過適配器使經(jīng)過動(dòng)態(tài)映射的對(duì)象模型與關(guān)系數(shù)據(jù)模型適配所述對(duì)象關(guān)系映射系統(tǒng)。
[0020]在上述任一技術(shù)方案中,優(yōu)選的,還可以包括:根據(jù)預(yù)設(shè)動(dòng)態(tài)映射數(shù)據(jù)范圍,判斷是否為所述映射請(qǐng)求提供所述動(dòng)態(tài)映射支持。
[0021]通過適配器可使對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)與原對(duì)象關(guān)系映射系統(tǒng)良好對(duì)接,保證了系統(tǒng)風(fēng)格的一致性,也便于后期維護(hù)。
[0022]本發(fā)明從橫、縱兩個(gè)維度上對(duì)對(duì)象模型和關(guān)系數(shù)據(jù)模型提供運(yùn)行時(shí)動(dòng)態(tài)代理ORM的方法及系統(tǒng),并且簡(jiǎn)單可靠切實(shí)可行,能夠與傳統(tǒng)ORM靜態(tài)映射方案良好對(duì)接,如同為ORM系統(tǒng)提供動(dòng)態(tài)映射插件,從而,保證了系統(tǒng)“風(fēng)格”的一致性,也便于后期維護(hù)。
【專利附圖】
【附圖說明】
[0023]圖1示出了根據(jù)本發(fā)明的實(shí)施例的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)的示意圖;
[0024]圖2示出了根據(jù)本發(fā)明的實(shí)施例的動(dòng)態(tài)對(duì)象關(guān)系映射系統(tǒng)的框圖;
[0025]圖3示出了根據(jù)本發(fā)明的實(shí)施例的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法的流程圖;
[0026]圖4示出了根據(jù)本發(fā)明的實(shí)施例的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法的流程圖。
【具體實(shí)施方式】
[0027]為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請(qǐng)的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0028]在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明并不限于下面公開的具體實(shí)施例的限制。
[0029]圖1示出了根據(jù)本發(fā)明的實(shí)施例的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)的示意圖。
[0030]如圖1所示,根據(jù)本發(fā)明的實(shí)施例的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)100,包括:攔截單元102,用于攔截根據(jù)客戶端向服務(wù)器發(fā)送的數(shù)據(jù)請(qǐng)求生成的映射請(qǐng)求;判斷單元104,用于判斷是否需為該映射請(qǐng)求提供動(dòng)態(tài)映射支持;解析單元106,用于在需提供動(dòng)態(tài)映射支持時(shí),根據(jù)映射請(qǐng)求解析映射參數(shù);動(dòng)態(tài)映射單元108,用于根據(jù)映射參數(shù)將對(duì)象關(guān)系映射系統(tǒng)中的對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射;訪問單元110,用于基于動(dòng)態(tài)映射后的對(duì)象模型進(jìn)行數(shù)據(jù)訪問,將訪問結(jié)果反饋至客戶端。
[0031]在需為映射請(qǐng)求提供動(dòng)態(tài)映射支持,本發(fā)明可解析映射參數(shù),根據(jù)映射參數(shù)對(duì)對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射,并與原對(duì)象關(guān)系映射系統(tǒng)進(jìn)行良好對(duì)接,簡(jiǎn)單可行。
[0032]優(yōu)選的,動(dòng)態(tài)映射單元108可以包括:映射對(duì)象更換子單元1082,用于在映射參數(shù)包含指定關(guān)系數(shù)據(jù)模型的名稱和對(duì)象模型的名稱時(shí),在對(duì)象關(guān)系映射系統(tǒng)中,將對(duì)象模型映射至指定關(guān)系數(shù)據(jù)模型,對(duì)象關(guān)系映射系統(tǒng)基于動(dòng)態(tài)映射后的對(duì)象模型,對(duì)指定關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
[0033]可以在橫向方向上更改對(duì)象模型的映射對(duì)象,避免一個(gè)對(duì)象模型對(duì)應(yīng)多個(gè)關(guān)系數(shù)據(jù)模型的復(fù)雜映射關(guān)系,實(shí)現(xiàn)橫向動(dòng)態(tài)映射。
[0034]在上述技術(shù)方案中,優(yōu)選的,動(dòng)態(tài)映射單元108可以包括:屬性更新子單元1084,用于在映射參數(shù)包含對(duì)象模型的更新屬性時(shí),根據(jù)更新屬性將擴(kuò)展字段寫入與對(duì)象模型對(duì)應(yīng)的擴(kuò)展關(guān)系數(shù)據(jù)模型中,對(duì)象關(guān)系映射系統(tǒng)基于更新屬性的對(duì)象模型,對(duì)與對(duì)象模型對(duì)應(yīng)的原關(guān)系數(shù)據(jù)模型和擴(kuò)展關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
[0035]可以在縱向方向上實(shí)現(xiàn)對(duì)象模型的屬性的更新并相應(yīng)地將對(duì)應(yīng)的擴(kuò)展字段寫入對(duì)應(yīng)的擴(kuò)展關(guān)系數(shù)據(jù)模型中,無需修改原對(duì)象關(guān)系映射系統(tǒng)中的原關(guān)系數(shù)據(jù)模型和實(shí)體對(duì)象模型,實(shí)現(xiàn)縱向動(dòng)態(tài)映射。
[0036]優(yōu)選的,對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)100還可以包括:適配器,用于使經(jīng)過動(dòng)態(tài)映射的對(duì)象模型與關(guān)系數(shù)據(jù)模型適配對(duì)象關(guān)系映射系統(tǒng)。
[0037]通過適配器可使對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)與原對(duì)象關(guān)系映射系統(tǒng)良好對(duì)接,保證了系統(tǒng)風(fēng)格的一致性,也便于后期維護(hù)。
[0038]在上述技術(shù)方案中,優(yōu)選的,判斷單元根據(jù)預(yù)設(shè)動(dòng)態(tài)映射數(shù)據(jù)范圍,判斷是否為映射請(qǐng)求提供動(dòng)態(tài)映射支持。
[0039]如圖2所示,在另一種實(shí)施例中,根據(jù)本發(fā)明的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)200主要包括動(dòng)態(tài)映射代理器202、動(dòng)態(tài)映射管理器204和適配器206,其中,動(dòng)態(tài)映射代理器202 (包括如圖1所示的攔截單元102和判斷單元104)主要用于攔截映射請(qǐng)求,并判斷是否需要為映射請(qǐng)求提供動(dòng)態(tài)映射支持。動(dòng)態(tài)映射管理器204 (包括如圖1所示的解析單元106和動(dòng)態(tài)映射單元108)主要用于解析映射請(qǐng)求對(duì)應(yīng)的映射參數(shù),并基于映射參數(shù)進(jìn)行動(dòng)態(tài)映射(包括橫向動(dòng)態(tài)映射和縱向動(dòng)態(tài)映射)。適配器206用于適配動(dòng)態(tài)映射管理器204和傳統(tǒng)的對(duì)象關(guān)系映射系統(tǒng)。
[0040]圖3示出了根據(jù)本發(fā)明的實(shí)施例的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法的流程圖。
[0041]如圖3所示,根據(jù)本發(fā)明的實(shí)施例的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法,可以包括以下步驟:
[0042]步驟302,攔截根據(jù)客戶端向服務(wù)器發(fā)送的數(shù)據(jù)請(qǐng)求生成的映射請(qǐng)求;判斷是否需為映射請(qǐng)求提供動(dòng)態(tài)映射支持;步驟304,在需提供動(dòng)態(tài)映射支持時(shí),根據(jù)映射請(qǐng)求解析映射參數(shù);步驟306,基于映射參數(shù)將對(duì)象關(guān)系映射系統(tǒng)中的對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射;步驟308,對(duì)象關(guān)系映射系統(tǒng)基于動(dòng)態(tài)映射后的對(duì)象模型進(jìn)行數(shù)據(jù)訪問,將訪問結(jié)果反饋至客戶端。
[0043]在需為映射請(qǐng)求提供動(dòng)態(tài)映射支持,本發(fā)明可解析映射參數(shù),根據(jù)映射參數(shù)對(duì)對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射,并與原對(duì)象關(guān)系映射系統(tǒng)進(jìn)行良好對(duì)接,簡(jiǎn)單可行。
[0044]在上述技術(shù)方案中,優(yōu)選的,在映射參數(shù)包含指定關(guān)系數(shù)據(jù)模型的名稱和對(duì)象模型的名稱時(shí),在對(duì)象關(guān)系映射系統(tǒng)中,將對(duì)象|吳型映射至指定關(guān)系數(shù)據(jù)1吳型;對(duì)象關(guān)系映射系統(tǒng)基于動(dòng)態(tài)映射后的對(duì)象模型,對(duì)指定關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
[0045]可以在橫向方向上更改對(duì)象模型的映射對(duì)象,避免一個(gè)對(duì)象模型對(duì)應(yīng)多個(gè)關(guān)系數(shù)據(jù)模型的復(fù)雜映射關(guān)系,實(shí)現(xiàn)橫向動(dòng)態(tài)映射。
[0046]在上述技術(shù)方案中,優(yōu)選的,在映射參數(shù)包含對(duì)象模型的更新屬性時(shí),根據(jù)更新屬性將擴(kuò)展字段寫入與對(duì)象模型對(duì)應(yīng)的擴(kuò)展關(guān)系數(shù)據(jù)模型中;對(duì)象關(guān)系映射系統(tǒng)基于更新屬性的對(duì)象模型,對(duì)與對(duì)象模型對(duì)應(yīng)的原關(guān)系數(shù)據(jù)模型和擴(kuò)展關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
[0047]可以在縱向方向上實(shí)現(xiàn)對(duì)象模型的屬性的更新并相應(yīng)地將對(duì)應(yīng)的擴(kuò)展字段寫入對(duì)應(yīng)的擴(kuò)展關(guān)系數(shù)據(jù)模型中,無需修改原對(duì)象關(guān)系映射系統(tǒng)中的原關(guān)系數(shù)據(jù)模型和實(shí)體對(duì)象模型,實(shí)現(xiàn)縱向動(dòng)態(tài)映射。
[0048]在上述任一技術(shù)方案中,優(yōu)選的,通過適配器使經(jīng)過動(dòng)態(tài)映射的對(duì)象模型與關(guān)系數(shù)據(jù)模型適配對(duì)象關(guān)系映射系統(tǒng)。
[0049]優(yōu)選的,對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法還可以包括:根據(jù)預(yù)設(shè)動(dòng)態(tài)映射數(shù)據(jù)范圍,判斷是否為映射請(qǐng)求提供動(dòng)態(tài)映射支持。
[0050]通過適配器可使對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng)與原對(duì)象關(guān)系映射系統(tǒng)良好對(duì)接,保證了系統(tǒng)風(fēng)格的一致性,也便于后期維護(hù)。
[0051]下面結(jié)合傳統(tǒng)ORM系統(tǒng)面對(duì)的動(dòng)態(tài)映射場(chǎng)景來詳細(xì)說明如何進(jìn)行動(dòng)態(tài)映射。
[0052]1.水平分表關(guān)系數(shù)據(jù)模型
[0053]XX電子商務(wù)系統(tǒng)由于考慮到系統(tǒng)交易信息量過大,對(duì)交易相關(guān)信息表采用了分表策略。例如,該系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)中有默認(rèn)有一張訂單(OrderO)表,隨著交易數(shù)據(jù)量的增加逐漸產(chǎn)生了 Orderl, 0rder2, 0rder3…它們的共同特征是表數(shù)據(jù)結(jié)構(gòu)相同,表名不同而已。這就是水平分表關(guān)系數(shù)據(jù)模型。隨著訂單表遞增式分表,該系統(tǒng)的ORM子系統(tǒng)將面臨著一個(gè)實(shí)體模型對(duì)應(yīng)多個(gè)結(jié)構(gòu)相同的關(guān)系數(shù)據(jù)模型。【背景技術(shù)】中已經(jīng)提到,傳統(tǒng)ORM系統(tǒng)對(duì)對(duì)象關(guān)系映射是聲明式的配置方案,例如,實(shí)體模型Order配置映射關(guān)系數(shù)據(jù)模型為OrderO。那么它在ORM系統(tǒng)中就只會(huì)映射到OrderO這個(gè)數(shù)據(jù)模型。因此,它只能提供靜態(tài)的ORM映射。面對(duì)這種水平分表關(guān)系數(shù)據(jù)模型,就需要實(shí)體模型運(yùn)行時(shí)能夠正確匹配對(duì)應(yīng)的關(guān)系數(shù)據(jù)模型。例如,當(dāng)前業(yè)務(wù)需要獲取關(guān)系數(shù)據(jù)模型Orderf。
[0054]本發(fā)明處理以上需求關(guān)鍵步驟如下:
[0055]①動(dòng)態(tài)映射代理器攔截到動(dòng)態(tài)映射請(qǐng)求;
[0056]②動(dòng)態(tài)映射代理器轉(zhuǎn)發(fā)映射請(qǐng)求給動(dòng)態(tài)映射管理器;
[0057]③動(dòng)態(tài)映射管理器解析映射參數(shù),并驗(yàn)證映射參數(shù)合法性;
[0058]④動(dòng)態(tài)映射管理器將ORM系統(tǒng)中對(duì)象模型Order映射的OrderO更新為0rder3 ;
[0059]⑤ORM系統(tǒng)基于動(dòng)態(tài)映射后的對(duì)象模型Order對(duì)關(guān)系數(shù)據(jù)模型0rder3進(jìn)行數(shù)據(jù)訪問,并返回ORM系統(tǒng)處理結(jié)果。
[0060]以上①?④步驟是本發(fā)明的處理水平分表數(shù)據(jù)模型的核心流程。
[0061]2.垂直分表關(guān)系數(shù)據(jù)模型
[0062]本發(fā)明的水平分表關(guān)系數(shù)據(jù)模型的處理方案屬于橫向動(dòng)態(tài)映射策略,根據(jù)映射要求動(dòng)態(tài)更新對(duì)象模型所映射的關(guān)系數(shù)據(jù)模型即可。而客戶自定義字段關(guān)系數(shù)據(jù)模型屬于縱向動(dòng)態(tài)映射策略,它要求運(yùn)行時(shí)更新對(duì)象模型中實(shí)體對(duì)象的屬性以及擴(kuò)展關(guān)系數(shù)據(jù)模型中數(shù)據(jù)表的字段。從而,相對(duì)處理水平分表關(guān)系數(shù)據(jù)模型而言,還有擴(kuò)展關(guān)系數(shù)據(jù)模型的步驟。因此,本質(zhì)上它就是垂直分表關(guān)系數(shù)據(jù)模型。例如,XX門戶系統(tǒng)中,關(guān)系數(shù)據(jù)模型中有張用戶表(User)。根據(jù)系統(tǒng)前期需求調(diào)研,對(duì)聯(lián)系電話(Phone)的描述只需提供工作電話(WorkPhone)、移動(dòng)電話(MobiIePhone)即可。因此,User表中Phone的描述只有WorkPhone和MobilePhone兩個(gè)字段。然而系統(tǒng)上線后,客戶提出還需要家庭電話(HomePhone)。面對(duì)客戶提出的這種需求時(shí),傳統(tǒng)ORM系統(tǒng)就需要為了這個(gè)很細(xì)小的變化去修改對(duì)象模型,甚至遷移User表歷史數(shù)據(jù),在User表中增加HomePhone字段。雖然這也是一種解決方案,但是如果以后客戶提出更多的自定義字段需求,那么上面的解決方案無疑對(duì)開發(fā)人員而言簡(jiǎn)直就是個(gè)具大的工程。
[0063]為了解決上述技術(shù)問題,本發(fā)明的處理關(guān)鍵步驟如下:
[0064]①動(dòng)態(tài)映射代理器攔截到動(dòng)態(tài)映射請(qǐng)求;
[0065]②動(dòng)態(tài)映射代理器轉(zhuǎn)發(fā)映射請(qǐng)求給動(dòng)態(tài)映射管理器;
[0066]③動(dòng)態(tài)映射管理器解析映射參數(shù),并驗(yàn)證映射參數(shù)合法性;
[0067]④動(dòng)態(tài)映射管理器為ORM系統(tǒng)中對(duì)象模型User添加HomePhone屬性,同時(shí)擴(kuò)展User對(duì)應(yīng)的關(guān)系數(shù)據(jù)模型。
[0068]User關(guān)系數(shù)據(jù)模型結(jié)構(gòu)如下:
[0069]A.User關(guān)系數(shù)據(jù)模型(即原關(guān)系數(shù)據(jù)模型):
[0070]
【權(quán)利要求】
1.一種對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng),其特征在于,包括: 攔截單元,用于攔截根據(jù)所述客戶端向服務(wù)器發(fā)送的數(shù)據(jù)請(qǐng)求生成的映射請(qǐng)求; 判斷單元,用于判斷是否需為所述映射請(qǐng)求提供動(dòng)態(tài)映射支持; 解析單元,用于在需提供所述動(dòng)態(tài)映射支持時(shí),根據(jù)所述映射請(qǐng)求解析映射參數(shù);動(dòng)態(tài)映射單元,用于根據(jù)所述映射參數(shù)將所述對(duì)象關(guān)系映射系統(tǒng)中的對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射; 訪問單元,用于基于動(dòng)態(tài)映射后的對(duì)象模型進(jìn)行數(shù)據(jù)訪問,將訪問結(jié)果反饋至所述客戶端。
2.根據(jù)權(quán)利要求1所述的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng),其特征在于,所述動(dòng)態(tài)映射單元包括: 映射對(duì)象更換子單元,用于在所述映射參數(shù)包含指定關(guān)系數(shù)據(jù)模型的名稱和對(duì)象模型的名稱時(shí),在所述對(duì)象關(guān)系映射系統(tǒng)中,將所述對(duì)象模型映射至所述指定關(guān)系數(shù)據(jù)模型,所述對(duì)象關(guān)系映射系統(tǒng)基于動(dòng)態(tài)映射后的所述對(duì)象模型,對(duì)所述指定關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
3.根據(jù)權(quán)利要求1所述的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng),其特征在于,所述動(dòng)態(tài)映射單元包括: 屬性更新子單元,用于在所述映射參數(shù)包含所述對(duì)象模型的更新屬性時(shí),根據(jù)所述更新屬性將擴(kuò)展字段寫入與所述對(duì)象模型對(duì)應(yīng)的擴(kuò)展關(guān)系數(shù)據(jù)模型中,所述對(duì)象關(guān)系映射系統(tǒng)基于更新屬性的所述對(duì)象模型,對(duì)與所述對(duì)象模型對(duì)應(yīng)的原關(guān)系數(shù)據(jù)模型和所述擴(kuò)展關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng),其特征在于,還包括: 適配器,用于使經(jīng)過動(dòng)態(tài)映射的對(duì)象模型與關(guān)系數(shù)據(jù)模型適配所述對(duì)象關(guān)系映射系統(tǒng)。
5.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理系統(tǒng),其特征在于,所述判斷單元根據(jù)預(yù)設(shè)動(dòng)態(tài)映射數(shù)據(jù)范圍,判斷是否為所述映射請(qǐng)求提供所述動(dòng)態(tài)映射支持。
6.一種對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法,其特征在于,包括: 攔截根據(jù)所述客戶端向服務(wù)器發(fā)送的數(shù)據(jù)請(qǐng)求生成的映射請(qǐng)求; 判斷是否需為所述映射請(qǐng)求提供動(dòng)態(tài)映射支持; 在需提供所述動(dòng)態(tài)映射支持時(shí),根據(jù)所述映射請(qǐng)求解析映射參數(shù); 基于所述映射參數(shù)將所述對(duì)象關(guān)系映射系統(tǒng)中的對(duì)象模型與關(guān)系數(shù)據(jù)模型進(jìn)行動(dòng)態(tài)映射; 所述對(duì)象關(guān)系映射系統(tǒng)基于動(dòng)態(tài)映射后的對(duì)象模型進(jìn)行數(shù)據(jù)訪問,將訪問結(jié)果反饋至所述客戶端。
7.根據(jù)權(quán)利要求6所述的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法,其特征在于,在所述映射參數(shù)包含指定關(guān)系數(shù)據(jù)模型的名稱和對(duì)象模型的名稱時(shí),在所述對(duì)象關(guān)系映射系統(tǒng)中,將所述對(duì)象模型映射至所述指定關(guān)系數(shù)據(jù)模型; 所述對(duì)象關(guān)系映射系統(tǒng)基于動(dòng)態(tài)映射后的所述對(duì)象模型,對(duì)所述指定關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
8.根據(jù)權(quán)利要求6所述的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法,其特征在于,在所述映射參數(shù)包含所述對(duì)象模型的更新屬性時(shí),根據(jù)所述更新屬性將擴(kuò)展字段寫入與所述對(duì)象模型對(duì)應(yīng)的擴(kuò)展關(guān)系數(shù)據(jù)模型中; 所述對(duì)象關(guān)系映射系統(tǒng)基于更新屬性的所述對(duì)象模型,對(duì)與所述對(duì)象模型對(duì)應(yīng)的原關(guān)系數(shù)據(jù)模塊和所述擴(kuò)展關(guān)系數(shù)據(jù)模型進(jìn)行數(shù)據(jù)訪問。
9.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法,其特征在于,通過適配器使經(jīng)過動(dòng)態(tài)映射的對(duì)象模型與關(guān)系數(shù)據(jù)模型適配所述對(duì)象關(guān)系映射系統(tǒng)。
10.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的對(duì)象關(guān)系映射系統(tǒng)的動(dòng)態(tài)代理方法,其特征在于,還包括:根據(jù)預(yù)設(shè)動(dòng)態(tài)映射數(shù)據(jù)范圍,判斷是否為所述映射請(qǐng)求提供所述動(dòng)態(tài)映射支持。
【文檔編號(hào)】G06F9/44GK104182410SQ201310198359
【公開日】2014年12月3日 申請(qǐng)日期:2013年5月24日 優(yōu)先權(quán)日:2013年5月24日
【發(fā)明者】鄭偉, 黃科 申請(qǐng)人:利德科技發(fā)展有限公司, 北京方正阿帕比技術(shù)有限公司