新四季網

支持運行時模型擴展的對象關係映射系統和方法

2023-05-10 12:14:06 2


專利名稱::支持運行時模型擴展的對象關係映射系統和方法
技術領域:
:本發明涉及對象關係映射(ORM)系統,具體地說,涉及支持運行時模型擴展的對象關係映射系統和方法。
背景技術:
:隨著面向對象的程序設計變為企業軟體開發的範例,對象關係映射(ORM)已成為一種越來越受歡迎的實現對象持久性的技術。在面向對象的(OO)的程序設計中,數據管理任務一般是通過操縱對象來實現的。然而,關係資料庫例如DB2、Oracle只能存儲和操縱關係數據,這些關係數據被組織在表中。因此,為了將對象保存到資料庫中,程式設計師必須手動設計對象的關係資料庫模式(schema)並把對象轉換成關係記錄。對於比較小的對象模型而言,這可能比較容易。但是在應用大規模對象模型的情況下,需要使用的對象模型越來越多,為對象模型手工設計資料庫會變得困難。對象關係映射(ORM)被用於將面向對象的程序設計模型映射到由Oracle、DB2、Sybase和其它關係資料庫管理器(RDBMS)管理的關係資料庫模型。從程式設計師的角度看,ORM系統應當看起來象一個永久的對象存儲庫。程式設計師只需生成對象並將它們傳送到ORM系統。ORM系統自動地將這些對象保存到關係資料庫中。目前有很多流行的ORM產品,例如WebsphereMetadataServer(XMeta)、ApacheOJB、Hibernate、Oracle'sTopLink等。下面參考圖1介紹ORM系統的基本組成和工作原理。圖1示出了現有技術的ORM系統10的結構框圖,它包括模型註冊模塊ll、對象關係(OR)映射模塊12和關係資料庫(RDB)13。在ORM系統10以外還有代碼生成器17和應用程式18。代碼生成器n用於識別面向對象的模型中的類和屬性,根據識別結果生成應用程式接口(API)並將生成的API傳遞給應用程式18。應用程式18利用從代碼生成器17傳遞來的API生成對象。關於代碼生成器17和應用程式18的操作是本領域的技術人員公知的,這裡不再詳細描述。為了使用ORM系統10,用戶需要將面向對象的模型註冊到ORM系統10。該系統10利用對象關係映射才莫塊12產生適於已註冊的模型的關係資料庫模式。然後,應用程式18可以將符合已註冊模型的對象串行送入ORM系統10。對象關係映射模塊12把這些對象自動翻譯成SQL(結構化查詢語言)語句。通過使用ORM系統IO,程式設計師可以以面向對象的方式將注意力集中於商業邏輯,而不需要花費時間手動處理對象進行關係資料庫翻譯,這將大大減輕程式設計師的工作負擔。下面舉例說明應用ORM系統的典型步驟。(1)由設計人員根據所需的商業邏輯設計適於具體應用的面向對象的模型,例如在一個機票預訂系統中,可以聲明一個類"TicketOrder",它包含例如三個屬性時間"Time"、客戶姓名"Name"、航班號"Flight",當然在實際中可以包含更多的屬性,例如價格、航空公司名稱、退票/改籤等等,這裡只是舉例說明。當然,如果模型已經存在,則可以跳過這個步驟。(2)將步驟(l)中的數據模型分別輸入到代碼生成器17和ORM系統10中的模型註冊模塊11,在模型註冊模塊11中註冊該數據模型並將其輸入到對象關係映射模塊12。對象關係映射模塊12根據數據模型產生關係資料庫模式,這裡的關係資料庫模式例如是指在關係資料庫13中的表的結構。另一方面,如上所述,代碼生成器17根據面向對象的模型生成相應的API。(3)對象關係映射模塊12在步驟(2)中產生的關係資料庫模式被部署到關係資料庫13中。(4)應用程式18利用生成的API產生數據對象,對象關係映射模塊12使用SQL語言將該數據對象保存/加載到關係資料庫13中。在上述例子中,每次有一個客戶提出機票預訂請求,應用程式18就生成一個數據對象,它含有與"Time"、"Name"、"Flight,,相對應的三個屬性值。這個數據對象被保存到關係資料庫13中,成為表的一個條目。以上例子可以參考下面的表,在該表中還附加了一個"ID,,列,這可以在生成關係資料庫模式時由對象關係映射模塊12自動加入。當然,這一列也可以不存在。tableseeoriginaldocumentpage7與傳統的關係資料庫相比,ORM系統具有很多優勢。然而,在應用ORM系統時也有一些限制。大多數ORM系統方案使用水平存儲模式,例如,在關係資料庫中每個類具有一個相關的表,類的每個屬性在該表中都具有一個相關的列,而類的每個實例(一個對象)對應於表的一行記錄。當模型不變時這沒有任何問題。但是,數據模型確實會發生改變,特別在SOA(面向業務的體系結構)環境中更是如此。例如,當稅收條例修改時,航空公司需要向機票預訂表中附加一個"燃油附加稅"項。在這樣的情況下,用於售票系統的數據模型只需要向"TicketOrder,,類附加一個"FuelCompTax,,屬性。但是,為了適應這個微小的改變,用戶需要(l)《吏ORM系統停止運行;(2)重新註冊新的模型,生成新的關係資料庫模式,並將關係資料庫13中適於舊模型的數據遷移到新的模型下;3)適於舊的API版本的應用程式18也需要升級到新的API。可見,目前的ORM系統不支持運行時的模型擴展,因為一旦模型被註冊,關係資料庫模式就被產生並被部署到關係資料庫。為了升級ORM系統,即使是很小的變化,也需要使系統停止運行,註冊新的模型並遷移數據,還要產生新的API並升級應用程式,這在時間和費用上都很不經濟,還會影響商業系統的正常運行,有時這是不能容忍的。現在需要一種在模型改變時不必使系統停止運行,而是支持在運行時對部署在ORM系統中的模型進行動態擴展的系統和方法。
發明內容為了解決以上問題,本申請提出一種通過添加元組存儲子系統而支持ORM系統的運行時擴展的系統和方法。這裡的元組存儲子系統是指將數據劃分成格式統一的多元組後進行存儲管理的系統。為了在運行時擴展已經部署的模型,用戶需要註冊模型的擴展部分。當需要保存的數據到來時,系統會自動地將與模型的擴展部分有關的數據轉換成多元組並保存到元組存儲子系統中。與模型的擴展部分無關的數據仍按已部署的模型被保存到關係資料庫中。通過這種方式,本發明就可以支持對已部署的模型的動態擴展,而不改變部署到關係資料庫的關係資料庫模式,也不用遷移關係資料庫中的數據。根據本發明的一個方面,提供了一種支持運行時模型擴展的對象關係映射系統,包括用於以關係數據的格式存取對象的關係數據存儲子系統,其特徵在於該系統還包括元組存儲子系統,用於以多元組的格式存取對象;和分派器/組裝器,用於根據對象的模型信息,分別對關係數據存儲子系統和元組存儲子系統進行對象的存取。在本發明的上述系統中,還可以包括模型註冊模塊,用於註冊對象的模型信息,以及響應於分派器/組裝器的請求將註冊的模型信息提供給分派器/組裝器。其中,對象的模型包括原始模型和至少一個在原始模型擴展後形成的擴展模型。符合擴展模型的對象包括兩個不同的組成部分與原始模型有關的數據以及與擴展部分有關的數據。在上述系統中,關係數據存儲子系統可以包括關係資料庫,用於存儲對象;和對象關係映射模塊,耦合在所述分派器/組裝器和所述關係資料庫之間,用於對所述關係資料庫進行對象的存取。元組存儲子系統可以包括多元組存儲庫,用於存儲多元組格式的數據;和對象-多元組翻譯器,耦合在所述分派器/組裝器和所述多元組存儲庫之間,用於將對象翻譯成多元組格式的數據並保存到多元組存儲庫,或者從多元組存儲庫中取出多元組格式的數據並翻譯成對象。在上述系統中,分派器/組裝器可以包括識別裝置,用於識別要存取的對象符合原始模型還是在該原始模型擴展後形成的擴展模型,根據識別結果向模型註冊模塊請求相應的模型信息,以及根據從模型註冊模塊獲得的模型信息在符合擴展模型的對象中區分與原始模型有關的數據以及與擴展部分有關的數據;分派裝置,用於在保存數據時,將與原始模型有關的數據和與擴展部分有關的數據分別分派給關係數據存儲子系統和元組存儲子系統進行保存;和組裝裝置,用於在取出數據時,將分別從所述關係數據存儲子系統和所述元組存儲子系統取回的與原始模型有關的數據和與擴展部分有關的數據組裝成符合所需模型的對象。在本發明的上述方面中,分派器/組裝器與位於該系統外部的應用程式相關聯,由應用程式請求分派器/組裝器存取對象。在系統外還存在一個代碼生成器,它根據不同的對象模型產生不同版本的API並提供給所述應用程式,而分派器/組裝器的識別裝置通過識別對象的API版本來識別該對象符合的模型。根據本發明的另一方面,提供了一種支持運行時模型擴展的對象關係映射方法,包括根據請求存取的對象的模型信息,分別以關係數據格式和多元組格式存取該對象的不同組成部分。本發明的上述方法還可以包括註冊對象的模型信息。對象的模型包括原始模型和至少一個在原始模型擴展後形成的擴展模型。在本發明的上述方法中,所述存取對象的步驟還包括在請求存取對象時,識別所請求的對象符合原始模型還是在該原始模型擴展後形成的擴展模型;如果所請求的對象符合原始模型,則以關係數據格式存取該對象;如果所請求的對象符合某種擴展模型,則根據註冊的模型信息,區分該對象中與原始模型有關的數據以及與擴展部分有關的數據;對於與原始模型有關的數據,以關係數據格式進行存取;對於與擴展部分有關的數據,以多元組格式進行存取。在上述方法中,在請求取出對象的情況下,如果所請求的對象符合擴展模型,則將分別具有關係數據格式的與原始模型有關的數據和具有多元組格式的與擴展部分有關的數據組裝成符合所需的擴展模型的對象。在上述方法中,可以通過識別被請求存取的對象的API版本來識別該對象符合的模型。根據以上簡要介紹的
發明內容可以知道,本發明通過將擴展的對象分成兩部分,一部分仍符合原始模型並按原關係資料庫模式保存,另一部分則被翻譯成多元組的形式來保存。這樣,模型擴展就可以在運行時動態地進行,不必修改關係資料庫資料庫中的模式,從而消除了使系統停止運行、升級關係資料庫模式和遷移數據的必要,減小了對系統運行的影響,降低了成本。結合附圖參考以下對本發明實施方式的詳細描述,將會清楚本發明的特徵和優點。圖中相同的標號代表相同的元件,在附圖中圖1示出了傳統的ORM系統的總體框圖。圖2示出根據本發明一種實施方式的擴展的ORM系統的體系結構。圖3示出了擴展的ORM系統在保存對象時的工作流程。圖4示出了擴展的ORM系統在取出對象時的工作流程。具體實施例方式本發明的目的是支持ORM系統的運行時模型擴展。面向對象的模型的擴展或者說修改可能有多種,包括例如*向現有的類添加新的屬性;*從現有的類刪除屬性;在現有的類之間添加新的關係;*刪除現有的類之間的關係;*添加新的類-向新的類添加屬性;-在新的類和現有的類之間添加新的關係;*刪除新的類;*重命名操作,該操作可以通過添加/刪除操作來實現。當然,可以理解,模型的擴展或者修改不限於以上列舉的種類,這裡只是舉例說明。圖2示出根據本發明一種實施方式的擴展的ORM系統20的體系結構。擴展的ORM系統20包括模型註冊模塊11、分派器/組裝器24、關係數據存儲子系統28和元組存儲子系統27。關係數據存儲子系統28包括對象關係映射模塊12和關係資料庫13,它們的功能與圖1中所示的部件相同。元組存儲系統27包括對象-多元組翻譯器25和多元組存儲庫26。在傳統的ORM系統中,被指定為類的對象在關係資料庫中以表的一個條目(一行記錄)的形式存在,它包括對應於每個屬性(每列)的屬性值。例如,參考上面的TicketOrder類,第一行(l;17:20PMonMay11,2007;王軍;CZ1246)代表了一個對象,它有對應於"ID"、"Time"、"Name,,和"Flight,,四個屬性的屬性值。同樣,在表的第2,3,......行中還可以有其它對象。不同的是,多元組或者說n元組是指有n個(n是大於2的整數)組成部分的有限序列。元組數據是被用來描述多元組的組成部分的數據。一種典型的多元組是三元組,它是具有格式的數據結構。在以三元組格式存儲時,對象的每個屬性被表示為一個三元組。例如被指定為TicketOrder類的對象爿,它具有四個屬性ID、Time、Name和Flight,分別,皮表示為^4,ID,1>、、和。這裡,對象名"J"是主語,對象的屬性是謂語,具體的屬性值是賓語。在本申請中,元組存儲系統是指將數據劃分成格式統一的多元組後進行存儲管理的系統。相應地,三元組存儲系統就是把數據劃分為主謂賓的三元組結構來存儲和取回數據的體系結構。在三元組存儲系統中,分別代表對象^的四個屬性的四個三元組將順序存儲。同樣,其它對象也可以表示成一組(例如四個)三元組,並且依次加載到三元組存儲系統中。本領域的技術人員可以理解,這裡的多元組不限於三元組,元組存儲系統也不限於三元組存儲系統,而是可以根據實際需要釆用其他元組形式。例如,可以採用四元組,即在上述三元組結構的基礎上增加一個新的組成部分,例如數據創建時間、數據創建路徑等其它信息。元組存儲的優點就是它具有被擴展和修改的能力,而不需要重新設計。例如,假設對象增加一個新的屬性,關係資料庫就要重新設計和部署新的關係資料庫模式,在表中增加一列,而在元組存儲系統中只需要在一個對象的原有多元組的後面順序添加與新的屬性相對應的新的多元組。例如在上述TicketOrder類的三元組存儲的例子中,如果添加了"燃油附加稅"的屬性,則可以在三元組存儲系統中加入新的三元組即可,而無需改變原有的三元組。可見,關係資料庫是一種基於列的存儲方式,而多元組是一種基於行的存儲方式。元組存儲系統的擴展能力強,但存儲效率不如關係資料庫。目前,已經存在很多成熟的元組存儲產品,例如IBM公司的SOR、WebifyTripleStore和Oracle/〉司的Oracle10g。現在返回圖2,進一步描述擴展的ORM系統20的組成和功能。模型註冊模塊11是用戶用於註冊對象模型以及聲明模型擴展的組件。它將記錄兩種類型的信息,一種是首次註冊的模型,另一種是有關每個版本的擴展模型的信息。模型註冊模塊11的一種可能的實施方式是對於每個版本的新模型,模型註冊模塊11將記錄它與原始版本的模型相比的變化部分。例如模型從model—vl升級到model_v2,模型註冊才莫塊11將記錄增加的屬性attributel(domain:Classl,range:string)和刪除的屬'性attribute2(domain:Class2,range:int)。在上述屬性的表達中,"domain,,是指屬性的擁有者,例如,attributel的擁有者是類Classl;"range"是指屬性的取值範圍,例如attributel的取值範圍是字符串(string),attribute2的取值範圍是整數(int)。當然,可以理解,模型註冊還有多種可能的方式,例如記錄每個新模型的全部信息,而不只是記錄變化部分。無論是什麼方式,只要使ORM系統20能夠區分模型的哪個部分與原始模型有關,哪個部分與擴展部分有關即可。下面介紹圖2中的分派器/組裝器24。在保存/加栽對象時,分派器/組裝器24起到分派器的作用,識別輸入的對象符合的模型版本,然後根據該模型版本向模型註冊模塊11請求相應的模型註冊信息,接著根據獲得的模型註冊信息從輸入的對象中分別提取與原始模型有關的數據和與擴展部分有關的數據。在一個例子中,分派器/組裝器24通過識別被請求存取的對象的API版本來識別該對象的模型版本。此後,分派器/組裝器24將與原始模型有關的數據"克隆,,到(或者說複製到)一個新的對象中並提供給關係數據存儲子系統28,由對象關係映射模塊12按照與現有技術相同的方式保存到關係資料庫13中。另一方面,分派器/組裝器24將與擴展部分有關的數據傳送到元組存儲子系統27。在該元組存儲子系統27中,對象-多元組翻譯器25將對象的擴展部分翻譯成多元組格式,然後保存到多元組存儲庫26中。從ORM系統20取出數據的過程與上述保存過程相反,分派器/組裝器24起到組裝器的作用,具體過程將在下面詳細討論。分派器/組裝器24可以被實施為包括多個裝置,例如識別裝置,用於識別要存取的對象符合的模型版本,根據該模型版本向模型註冊模塊11請求相應的模型信息,以及根據從模型註冊模塊11獲得的模型信息在符合擴展模型的對象中區分與原始模型有關的數據以及與擴展部分有關的數據;分派裝置,用於在保存數據時,將與原始模型有關的數據和與擴展部分有關的數據分別分派給關係數據存儲子系統28和元組存儲子系統27進行保存;組裝裝置,用於在取出數據時,將分別從關係數據存儲子系統28和元組存儲子系統27取回的與原始模型有關的數據和與擴展部分有關的數據組裝成符合所需模型版本的對象。本領域的技術人員可以理解,這些裝置可以用硬體、軟體或者軟硬體結合的方式來實現,但在圖中沒有具體示出。下面參考圖2和圖3舉例說明向包含"Time"、"Name"、"Flight"三個屬性的TicketOrder類的對象添加新的屬性"FuelCompTax,,的過程。圖3示出了ORM系統20在保存對象時的工作流程。假設原始的對象模型包含"Time"、"Name"、"Flight,,三個屬性,且已被註冊在模型註冊模塊ll中,同時代碼生成器17生成了與原始模型相對應的原始API,應用程式18產生符合原始API版本的對象並將它提供給分派器/組裝器24。另外,用戶設計出增加了"FueICompTax"屬性的擴展模型並把它註冊到模型註冊模塊11。同樣,代碼生成器17生成與擴展模型相對應的升級的API並將它提供給應用程式18'。注意,應用程式18和應用程式18'之間的唯一差別就是採用了不同的API,在圖中示為分開的兩個模塊是為了清楚起見,實際上應用程式18'只是升級後的應用程式18,而不一定是兩個物理上分開的模塊。應用程式18'釆用升級的API,產生符合升級後的API的對象並把它提供給分派器/組裝器24。參考圖3,在步驟S31,需要保存的對象被輸入到ORM系統20。在步驟S32,分派器/組裝器24判斷輸入的對象符合的模型版本。如果符合原始模型,則在步驟S35,分派器/組裝器24將輸入的對象直接傳送到關係數據存儲子系統28,由對象關係映射模塊12按照原有的關係資料庫模式將對象保存到關係資料庫13中。如果在步驟S32判斷要保存的對象符合某個擴展的模型,則在步驟S33,分派器/組裝器24向模型註冊模塊11請求該對象的模型註冊信息,並根據從模型註冊模塊11返回的模型註冊信息從輸入的對象中提取與原始模型有關的數據並"克隆,,或者說複製到一個符合原始模型的新對象中,並將該新對象提供給關係數據存儲子系統28,由對象關係映射模塊12按照原有的關係資料庫模式將這個新的對象保存到關係資料庫13中。在步驟S34,分派器/組裝器24根據從模型註冊模塊11返回的模型註冊信息從輸入的對象中提取與擴展部分有關的數據並提供給元組存儲子系統27,由對象-多元組翻譯器25翻譯成多元組格式的數據並保存到多元組存儲庫26中。參考前面的預訂機票的例子舉例說明保存對象的過程。當增加了"FuelCompTax"屬性的對象送入ORM系統20時,分派器/組裝器24識別並提取出"Time"、"Name"、"Flight"三個屬性的信息並複製到一個符合原始模型的新對象中。由於這個新的對象與原始模型一致,所以按照原有的關係資料庫模式保存到關係資料庫13中是沒有任何問題的,關係資料庫13不需要重新設計和升級。另一方面,分派器/組裝器24從輸入對象中提取出與擴展的"FuelCompTax"屬性有關的數據,對象-多元組翻譯器25將它翻譯成多元組,例如<4,FuelCompTax,Value〉這樣的三元組,並將它保存在多元組存儲庫26中。在另一個例子中,模型修改是刪除屬性/關係,這時在圖3的步驟S33中,在複製出的新對象中,被刪除的屬性對應的屬性值為"空",仍可以按原有的關係資料庫模式將該新對象保存到關係資料庫13中。從以上過程可以看出,本發明是將擴展的對象分成兩部分,一部分仍符合原始模型則按原關係資料庫模式保存到關係資料庫中,另一部分則被翻譯成多元組的形式後保存到元組存儲子系統中。這樣,模型擴展就可以在運行時動態地進行,不必修改關係資料庫中的模式,從而消除了使系統停止運行、升級關係資料庫模式和遷移數據的必要,減小了對系統運行的影響,降低了成本,節省了時間。與保存/加載對象相對的是對象數據的取出,圖4示出了擴展的ORM系統20在取出對象時的工作流程。首先,在步驟S41,應用程式18(18,)向ORM系統20請求需要取出的對象。在步驟S42,分派器/組裝器24判斷所請求的對象符合哪個模型版本。如果所請求的對象符合原始模型,則在步驟S46,分派器/組裝器24直接向關係數據存儲子系統28請求該對象,對象關係映射模塊12接到請求後向關係資料庫13發出查詢,如果在關係資料庫13中找到該對象的話,則取出所請求的對象並經由分派器/組裝器24返回給發出請求的應用程式18。另一方面,如果在步驟S42判斷所請求的對象符合某個擴展的模型版本,則在步驟S43,分派器/組裝器24根據從模型註冊模塊11獲得的模型註冊信息,向關係數據存儲子系統28請求與原始模型有關的數據,如果在關係資料庫13中找到該數據的話,則由對象關係映射模塊12取出該數據並返回給分派器/組裝器24。在步驟S44,分派器/組裝器24根據從模型註冊模塊11獲得的模型註冊信息,向元組存儲子系統27請求與擴展部分有關的數據,如果在多元組存儲庫26中找到該數據的話,則由對象-多元組翻譯器25取回該數據,翻譯成對象形式的數據後返回給分派器/組裝器24。然後,在步驟S45,分派器/組裝器24將分別從關係數據存儲子系統28和元組存儲子系統27返回的數據組裝成一個新的對象,該對象符合所請求的擴展模型版本,然後將這個新對象返回給發出請求的應用程式18'。還是參考前面的例子舉例說明取回對象的過程。當請求取出包含"FuelCompTax,,屬性的對象時,分派器/組裝器24識別出該對象符合一個擴展模型,並從模型註冊模塊11獲得相應的模型註冊信息。然後,分派器/組裝器24根據該模型註冊信息從關係數據存儲子系統28取回符合原始模型的數據部分,其包含"Time"、"Name"、"Flight"三個屬性,再從元組存儲子系統27取回包含擴展屬性"FuelCompTax"的多元組,例如<」,FuelCompTax,Value〉這樣的三元組,並將它翻譯成對象格式。最後,分派器/組裝器24將符合原始模型的數據部分和包含擴展屬性的數據部分組裝成包含全部四個屬性的對象,其格式符合在模型註冊模塊ll中註冊的模型信息。圖中的框圖和流程圖描述了根據本發明的系統和方法的某些可能實施方式的體系結構、功能和操作。為此,流程圖或框圖中的每個方框可以代表一個模塊、裝置、代碼段或代碼的一部分,其包括用於實現指定邏輯功能的一個或多個可執行指令。此外可以理解,在圖3和圖4中示出的步驟只是示意性的,可以添加、刪除、修改圖中的步驟或改變它們的順序,圖中順序執行的步驟也可以同時執行,甚至以相反順序執行,這是本領域的技術人員能夠理解的。本發明可以採用完全硬體的實施方式、完全軟體的實施方式或包含硬體和軟體成分的實施方式。此外,本發明可以釆用電腦程式產品的形式,該電腦程式產品可以從提供程序代碼供計算機或任何指令執行系統使用或與之結合使用的計算機可用介質或計算機可讀介質來訪問。對於本申請,計算機可用介質或計算機可讀介質可以是可包含、存儲、傳送、傳播或輸送程序供計算機或任何指令執行系統、裝置或設備使用或與之結合使用的任何裝備。介質可以是電的、磁的、光的、電磁的、紅外或半導體系統(或設備或器件)或傳播媒體。計算機可讀介質的例子包括半導體或固態存儲器、磁帶、可拆卸的計算機盤、隨機訪問存儲器(RAM)、只讀存儲器(ROM)、硬磁碟和光碟。光碟的當前的例子包括壓縮盤-只讀存儲器(CD-ROM)、壓縮盤-讀/寫(CD-R/W)和DVD。適於存儲和/或執行程序代碼的數據處理系統將包括至少一個通過系統總線直接或間接耦合到存儲器單元的處理器。存儲器單元可包括在程序代碼執行期間所使用的局部存儲器、大容量存儲裝置和緩存,緩存提供至少某些程序代碼的臨時存儲,以便減小代碼在執行期間必須從大容量存儲裝置取回的次數。輸入/輸出或者說i/o設備(包括但不限於鍵盤、顯示器、指針設備等等)可直接或通過居中的1/0控制器被耦合到系統。網絡適配器也可以被耦合到系統,使得數據處理系統能夠通過居中的專用網或公共網被耦合到其它數據處理系統或遠程存儲裝置。數據機、有線數據機和乙太網卡僅僅是幾種當前可用類型的網絡適配器。雖然上面參照附圖解釋了本發明的具體實施方式,但這些描述只是為了舉例說明,而不是限制性的。本領域的技術人員在閱讀以上內容後,可以作出上述實施方式的變型和修改,這些都落入本發明的真實精神和範圍內。權利要求1.一種支持運行時模型擴展的對象關係映射系統,包括用於以關係數據的格式存取對象的關係數據存儲子系統,其特徵在於該系統還包括元組存儲子系統,用於以多元組的格式存取對象;和分派器/組裝器,用於根據對象的模型信息,分別對所述關係數據存儲子系統和所述元組存儲子系統進行對象的存取。2.根據權利要求1所述的系統,還包括模型註冊模塊,用於註冊對象的模型信息,以及響應於所述分派器/組裝器的請求將註冊的模型信息提供給所述分派器/組裝器。3.根據權利要求1所述的系統,其中,所述關係數據存儲子系統包括關係資料庫,用於存儲對象;和對象關係映射模塊,耦合在所述分派器/組裝器和所述關係資料庫之間,用於對所述關係資料庫進行對象的存取。4.根據權利要求1所述的系統,其中,所述元組存儲子系統包括多元組存儲庫,用於存儲多元組格式的數據;和對象-多元組翻譯器,耦合在所述分派器/組裝器和所述多元組存儲庫之間,用於將對象的組成數據翻譯成多元組格式的數據並保存到所述多元組存儲庫中,或者從所述多元組存儲庫中取出多元組格式的數據並翻譯成對象的組成數據。5.根據權利要求2所述的系統,其特徵在於所述分派器/組裝器包括識別裝置,用於識別要存取的對象符合原始模型還是在該原始模型擴展後形成的擴展模型,根據識別結果向所述模型註冊模塊請求相應的模型信息,以及根據從所述模型註冊模塊獲得的模型信息在符合擴展模型的對象中區分與原始模型有關的數據以及與擴展部分有關的數據;分派裝置,用於在保存數據時,將與原始模型有關的數據和與擴展部分有關的數據分別分派給所述關係數據存儲子系統和所述元組存儲子系統進行保存;和組裝裝置,用於在取出數據時,將分別從所述關係數據存儲子系統和所述元組存儲子系統取回的與原始模型有關的數據和與擴展部分有關的數據組裝成符合所需模型的對象。6.根據權利要求5所述的系統,其特徵在於,所述分派器/組裝器與位於該系統外部的應用程式相關聯,所述應用程式請求所述分派器/組裝器存取符合不同模型的對象。7.根據權利要求6所述的系統,其特徵在於,由位於該系統外部的代碼生成器根據不同的對象模型產生不同版本的API並提供給所述應用程式,而所述識別裝置通過識別要存取的對象的API版本來識別該對象符合的模型。8.根據權利要求2所述的系統,其中,所述的原始模型擴展包括以下至少一種向現有的類添加新的屬性;從現有的類刪除屬性;在現有的類之間添加新的關係;刪除現有的類之間的關係;添加新的類;刪除新的類;重命名操作。9.根據權利要求8所述的系統,其中,添加新的類的操作包括以下至少一種向新的類添加屬性;在新的類和現有的類之間添加新的關係。10.—種支持運行時模型擴展的對象關係映射方法,包括根據請求存取的對象的模型信息,分別以關係數據格式和多元組格式存取該對象的不同組成部分。11.根據權利要求10所述的方法,還包括註冊對象的模型信息。12.根據權利要求11所述的方法,其特徵在於,所述存取步驟還包括在請求存取對象時,識別所請求的對象符合原始模型還是在該原始模型擴展後形成的擴展模型;如果所請求的對象符合原始模型,則以關係數據格式存取該對象;如果所請求的對象符合擴展模型,則根據註冊的模型信息,區分該對象中與原始模型有關的數據以及與擴展部分有關的數據;對於與原始模型有關的數據,以關係數據格式進行存取;對於與擴展部分有關的數據,以多元組格式進行存取。13.根據權利要求12所述的方法,其特徵在於,在請求取出對象的情況下,如果所請求的對象符合擴展模型,則將分別具有關係數據格式的與原始模型有關的數據和具有多元組格式的與擴展部分有關的數據組裝成符合所需的擴展模型的對象。14.根據權利要求13所迷的方法,識別所請求的對象符合原始模型還是擴展模型的步驟包括通過識別所請求的對象的API版本來識別該對象符合的模型。15.根據權利要求11所述的方法,其中,所述的模型擴展包括以下至少一種向現有的類添加新的屬性;從現有的類刪除屬性;在現有的類之間添加新的關係;刪除現有的類之間的關係;添加新的類;刪除新的類;重命名操作。16.根據權利要求15所述的方法,其中,添加新的類的操作包括以下至少一種向新的類添加屬性;在新的類和現有的類之間添加新的關係。全文摘要本發明涉及一種支持運行時模型擴展的對象關係映射系統和方法。該系統包括關係數據存儲子系統,用於以關係數據的格式存取對象;元組存儲子系統,用於以多元組的格式存取對象;和分派器/組裝器,用於根據對象的模型信息,分別向關係數據存儲子系統和元組存儲子系統存取對象的原始部分和擴展部分。這樣就可以在對象關係映射系統中支持運行時模型擴展,而不必在升級時關閉系統或者在關係資料庫中修改模式並遷移數據。文檔編號G06F9/44GK101546259SQ20081008797公開日2009年9月30日申請日期2008年3月28日優先權日2008年3月28日發明者劉昇平,鋒曹,洋楊,晨王,謝國彤申請人:國際商業機器公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀