欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于代理的數(shù)據(jù)對象持久化方法及裝置的制作方法

文檔序號:6472561閱讀:264來源:國知局
專利名稱:基于代理的數(shù)據(jù)對象持久化方法及裝置的制作方法
技術領域
本發(fā)明涉及數(shù)據(jù)持久化領域,具體涉及一種基于代理的數(shù)據(jù)對象持久化方法及裝置。
技術背景在計算機系統(tǒng)中,將數(shù)據(jù)存儲到外部存儲介質的過程稱為數(shù)據(jù)的持久化。持久化的數(shù)據(jù) 不會因系統(tǒng)掉電而丟失。需要長期保存的數(shù)據(jù)都需要進行持久化。持久化存儲設備的容量比 計算機系統(tǒng)內存的容量要大得多,大量數(shù)據(jù)需要存儲的時候也要使用持久化技術。數(shù)據(jù)持久化技術的內容非常豐富?,F(xiàn)有的數(shù)據(jù)持久化技術的方式主要有兩種關系式數(shù) 據(jù)庫和文件。在這兩種技術基礎上,又派生出多種技術在關系式數(shù)據(jù)庫基礎上派生出對象 -關系映射技術,在文件基礎上派生出可擴展標記語言(XML, Extensible Markup Language)技術等等。當前與本發(fā)明最相近的技術是對象-關系映射技術。對象-關系映射技術是基于結構化査 詢語言(SQL, Structured Query Language)的一種數(shù)據(jù)持久化技術。它通過建立程序的對 象和關系式數(shù)據(jù)庫表的映射,從而使得程序員能夠以對象的方式訪問數(shù)據(jù)庫表,實現(xiàn)數(shù)據(jù)的 持久化操作。它是面向對象技術和結構化査詢語言的混合體。使用對象-關系映射技術實現(xiàn)數(shù)據(jù)持久化的過程如下1、 根據(jù)對象定義,在數(shù)據(jù)庫中創(chuàng)建表;2、 為程序的對象和數(shù)據(jù)庫表建立映射關系;3、 根據(jù)需求編寫類SQL語句,通過這些語句實現(xiàn)對持久化數(shù)據(jù)的操作;4、 在運行時,在寫入操作中,對象-關系映射引擎把程序的對象轉換為數(shù)據(jù)庫表的行, 在讀取操作中,把結果填充到程序的對象中。上述方案,要求編程人員必須有SQL知識,必須了解關系式數(shù)據(jù)的概念及其工作方式; 必須在設計對象類的時候考慮到如何映射到表;在把復雜的業(yè)務對象進行持久化的時候,一 般需要一個解耦合的過程。上述問題增加了變成人員的工作量,提高了編程門檻。另外,不 同軟件廠商的對象-關系映射平臺之間也存在差異,這增加了軟件移植的工作量。發(fā)明內容本發(fā)明實施例提供一種基于代理的數(shù)據(jù)對象持久化的方法及裝置,使得編程人員能夠如 同訪問內存中的數(shù)據(jù)對象一樣方便地訪問持久化的數(shù)據(jù)對象,從而簡化持久化數(shù)據(jù)訪問的編 程,屏蔽各種數(shù)據(jù)持久化底層技術的差異,增加應用系統(tǒng)的可移植性。本發(fā)明的基本思想是通過對數(shù)據(jù)對象的方法的代理,使得數(shù)據(jù)對象的使用者,只需要 定義數(shù)據(jù)對象的訪問接口 ,就可以實現(xiàn)數(shù)據(jù)對象的持久化。本發(fā)明實施例提供的數(shù)據(jù)持久化方法,包括根據(jù)用戶定義的接口,在運行時,生成接 口的代理對象;由代理對象代理對持久化對象的操作。其中,生成接口代理對象的步驟包括為每個需要訪問的持久化的對象,根據(jù)其接口定義創(chuàng)建 代理對象;代理對象根據(jù)標識與持久化對象關聯(lián);對持久化對象的操作包括創(chuàng)建持久化對象、刪除持久化對象、設置持久化對象內容、 讀取持久化對象內容、對象命名。其中,創(chuàng)建持久化對象的步驟包括為對象生成唯一對象標識;根據(jù)接口定義和對象標識,在 持久化空間中創(chuàng)建持久化對象,在運行空間創(chuàng)建代理對象;刪除持久化對象的步驟包括從持久化空間刪除持久化對象;把代理對象標記為刪除;設置持久化對象內容,對于固定復合類型的對象,如果屬性值不是代理對象,則在持久 化空間中保存屬性的值,否則,保存其標識。對于可變復合類型的對象,如果元素的值不是 代理對象,則在持久化空間中保存元素的值,否則,保存其標識。讀取持久化對象內容,對于固定復合類型的對象,如果屬性值不是代理類型,則直接把 持久化空間的屬性值轉換為運行空間的屬性值對象,否則,為其創(chuàng)建一個代理對象;對于可 變復合類型的對象,如果元素值不是代理類型,則直接把持久化空間的元素值轉換為運行空 間的屬性值對象,否則,為其創(chuàng)建一個代理對象;對象命名,在持久化空間中建立一個一對一的字符串(名字)與對象標識的映射,通過 對此映射的插入、刪除、修改和査詢操作實現(xiàn)對象的命名、除名、重命名、根據(jù)名字取得對 象操作。本發(fā)明實施例提供的數(shù)據(jù)持久化裝置包括 一個存儲庫單元、 一個以上的代理對象單元 、 一個以上的適配器單元;其中,存儲庫單元,用于緩存數(shù)據(jù)、創(chuàng)建代理對象、刪除對象;代理對象單元,即數(shù)據(jù)接口的代理對象單元,用戶通過對代理對象的操作,實現(xiàn)對持久 化數(shù)據(jù)的操作;對于固定復合類型的接口,代理其屬性的讀取、修改;對于可變復合類型的 接口,代理其元素的增加、刪除、査找、修改;適配器單元,用于把根據(jù)適配器接口來的操作轉換為對具體的持久化底層平臺的操作; 所有的適配器單元,使用統(tǒng)一的適配器接口,從而屏蔽各種持久化底層平臺的差異。 從以上技術方案可以看出,本發(fā)明實施例具有以下優(yōu)點使編程人員以與訪問內存數(shù)據(jù)對象一樣方便地訪問持久化數(shù)據(jù)對象,提高了編程人員的 工作效率。降低了編程人員的技術門檻。例如,程序員不需要學習數(shù)據(jù)庫技術就可以把數(shù)據(jù)持久化 到數(shù)據(jù)庫中。屏蔽了各種持久化平臺之間的差異,增加了應用系統(tǒng)的可移植性。


圖l為本發(fā)明裝置的組成結構圖; 圖2為本發(fā)明創(chuàng)建持久化對象的流程圖; 圖3為本發(fā)明修改持久化對象內容的流程圖; 圖4為本發(fā)明獲取持久化對象內容的流程圖;具體實施方式
本發(fā)明實施例提供一種基于代理的數(shù)據(jù)對象持久化方法及裝置,以簡化持久化數(shù)據(jù)訪 問的編程,屏蔽各種底層數(shù)據(jù)持久化技術的差異,增加應用系統(tǒng)的可移植性。所謂代理(proxy),就是用一個中介來封裝一系列的對象交互,從而使各對象不需要 顯式地相互引用,使其耦合松散,而且可以獨立地改變它們之間的交互。代理涉及到三個部 分抽象角色、代理對象、目標對象,其中,抽象角色聲明真實對象和代理對象的共同接口。代理對象,代理對象內部含有對目標對象的引用,從而可以操作目標對象,同時代理對 象提供與目標對象相同的接口以代替目標對象。此外,代理對象可以在執(zhí)行對目標對象的操 作時,附加其他的操作,相當于對目標對象進行封裝。目標對象,代理對象所代表的對象,是被最終要引用的對象。請參閱圖l,本發(fā)明實施例提供的數(shù)據(jù)持久化裝置包括儲存庫單元101、代理對象單元 102、適配器單元103,其中,儲存庫單元101,是一個用于對數(shù)據(jù)對象進行創(chuàng)建、刪除、命名等操作的模塊,它是用 來根據(jù)接口生成代理對象的工廠(factory);在儲存庫單元中,還維護了一個以對象標識為索引的當前代理對象的列表,用于防止重復創(chuàng)建代理對象;代理對象單元102,是用戶定義的數(shù)據(jù)接口104的代理對象單元,用戶通過對代理對象的 操作,實現(xiàn)對持久化數(shù)據(jù)的操作;代理對象單元102可以代理固定復合類型和可變復合類型 的接口;對于固定復合類型的接口,代理其屬性的讀取、修改;對于可變復合類型的接口, 代理其元素的增加、刪除、査找、修改;適配器單元103,把對持久化平臺的抽象訪問轉換成對具體的持久化平臺的訪問, 一般 情況下,每種持久化平臺需要一種適配器。另外,數(shù)據(jù)接口104,是編程人員根據(jù)所開發(fā)的應用軟件的需求而定義的訪問數(shù)據(jù)的接口;持久化對象105,是根據(jù)數(shù)據(jù)接口104,由本發(fā)明實施例提供的數(shù)據(jù)持久化裝置在持久化 空間107中生成的數(shù)據(jù)對象。本發(fā)明實施例提供的數(shù)據(jù)持久化裝置中,抽象角色即是用戶定義的數(shù)據(jù)接口104,代理 對象即代理對象單元102,目標對象即持久化對象105。下面對本發(fā)明的數(shù)據(jù)對象持久化方法進行描述。本發(fā)明實施例提供的數(shù)據(jù)持久化方法,主要步驟是根據(jù)用戶定義的接口,在運行時, 生成接口的代理對象;由代理對象代理對持久化對象的操作。 生成接口代理對象生成接口代理對象的具體步驟包括為每個需要訪問的持久化對象,根據(jù)其接口定義創(chuàng) 建代理對象;代理對象根據(jù)標識與持久化對象關聯(lián)。每個在應用程序中需要進行持久化操作的對象,在應用程序的運行空間中都有一個代理 對象。代理對象是在運行空間按需創(chuàng)建的,不需要為所有的持久化對象創(chuàng)建代理對象。代理 對象是由儲存庫單元根據(jù)編程人員定義的數(shù)據(jù)接口在運行時動態(tài)創(chuàng)建的,在程序運行結束后 代理對象消失,而其對應的持久化對象則在持久化空間長久保存。數(shù)據(jù)持久化操作包括創(chuàng)建持久化對象、刪除持久化對象、設置持久化對象內容、讀取 持久化對象內容、對象命名。下面對其分別具體敘述。 創(chuàng)建持久化對象請參閱圖2,創(chuàng)建對象的具體步驟為根據(jù)接口取得對象的定義201,如果是固定復合類型接口,則根據(jù)其所有屬性的名稱和 類型以定義持久化對象;如果是可變復合類型,則根據(jù)其元素類型以定義持久化對象;為對象創(chuàng)建唯一的標識202,每個對象在持久化中都有一個全局的唯一對象標識,根據(jù)這個標識可以唯一確定一個對象;在持久化空間中創(chuàng)建持久化對象203,根據(jù)步驟201所取得的對象的定義和步驟202創(chuàng)建 的對象標識,在持久化中為此對象分配存儲空間,此存儲空間可根據(jù)其標識訪問到;創(chuàng)建接口的代理對象204,在應用程序運行空間中,為此接口創(chuàng)建一個代理對象,代理 對象本身并不保存數(shù)據(jù),而是把對其訪問,轉換為對持久化中的數(shù)據(jù)的訪問。 刪除持久化對象刪除持久化對象過程就是從持久化空間中刪除所存儲的對象,并釋放其存儲空間。其具 體步驟為從持久化空間刪除持久化對象; 把代理對象標記為刪除。設置持久化對象內容 請參閱圖3,設置持久化對象內容的過程具體為 應用程序調用設置對象內容方法301;根據(jù)被調用的方法得到內容的標識302,這里所說的內容的標識是指固定復合類型對象 的屬性的名稱或者可變復合類型對象的元素的下標;判斷,被設置的值是否是代理對象303,對象內容的值可以是代理對象,也可以不是代 理對象;如果是代理對象,貝!」,把值對象的標識存儲到持久化對象中304,在持久化空間中,這 個值就是這個代理對象的標識;如果不是代理對象,貝!」,把值對象轉換為可保存的形式存儲到持久化對象中305,例如 日期型數(shù)據(jù),可以被轉換為字符串格式或者長整數(shù)格式進行保存。 讀取持久化對象內容讀取持久化對象內容,即讀取固定復合類型的屬性或者可變復合類型的元素。對象的內 容可以是代理對象,也可以不是代理對象,例如一個整數(shù)。 請參閱圖4,讀取對象屬性的具體步驟為應用程序調用內容讀取方法401 ,即應用程序調用固定復合類型對象的屬性讀取方法或 者可變復合類型對象的元素讀取方法;根據(jù)被調用的方法得到所要讀取的內容的標識402 ,這里所說的內容的標識是指屬性的 名稱或者元素的下標;在持久化中得到對象內容的值403,這個值可以是代理對象的標識,也可以是非代理對象的值;判斷值是否是代理對象的標識404;如果是,根據(jù)標識得到代理對象并返回給調用者406,具體過程為根據(jù)對象的標識, 從儲存庫單元的代理對象列表中査看是否已經為持久化對象創(chuàng)建了代理對象,如果已經創(chuàng)建 ,則直接從儲存庫中根據(jù)對象標識取得代理對象;如果沒有創(chuàng)建,則創(chuàng)建一個代理對象,并 將此代理對象加入到儲存庫單元的代理對象列表中;如果不是,那么,把此值轉換為相應類型的對象并返回給調用者405,這種轉換與底層 持久化平臺密切相關,對每種基本類型都有各自的轉換方法。 對象命名在運行空間,通過對象間的引用關系,可以從一個對象取得另一個對象。對于沒有引用 關系的對象,通過把一個對象與一個字符串(名字)相關聯(lián),從而可以根據(jù)這個字符串從持 久化空間中取出這個對象。對象命名的機制是,在持久化空間中建立一個一對一的字符串(名字)與對象標識的映 射,通過對此映射的插入、刪除、修改和査詢操作實現(xiàn)對象的命名、除名、重命名、根據(jù)名 字取得對象操作。 應用示例下面是本發(fā)明的一個Java語言上的應用示例首先,編程人員根據(jù)程序的需要,以源代碼的形式定義數(shù)據(jù)對象的接口。例如用戶定 義如下的兩個需要持久化的數(shù)據(jù)的接口D印artment和Employee,代碼如下 public interface Department {public String getNameO;public void setName(String name);public Collection〈Employee> getEmps();public void setEmps(Collection〈Employee> emps);public interface Employee { public String getNameO; public void setName(String name); public float getSalaryO; public void setSalary(float salary);數(shù)據(jù)對象的屬性可以是基本類型也可以是代理的類型,上述代碼中D印artment接口的 name屬性是一個不是代理對象,Emps屬性是一個代理對象,是Employee類型對象的集合。 下面是其應用示例 對數(shù)據(jù)進行持久化時Repository r印os = new Repository (….);Employee zhang = r印os. create (Employee, class);zhang. setName (〃張三〃);zhang. setSalary (3000);Employee li = r印os. create (Employee, class); li. setName (〃李四〃); li. setSalary(4000);Employee wang = r印os. create (Employee, class); wang. setName (〃王五〃); wang. setSalary (5000);Collection〈Employee〉 emps = r印os. createCollection0 ; emps. add (zhang); emps. add(li); emps. add(wang);Department d印t = r印os. create (Department, class);d印t. setName (〃技術咅IT);dept. setEmps(emps);r印os. giveName (d印t, 〃tech d印t〃);讀取持久化的數(shù)據(jù)Repository r印os = new Repository (….);Department dept2= (Department) r印os. findByName (〃tech d印t〃); for (Employee emp: d印t2. getEmps ()) {System, out. println (emp. getName()+〃, salary :〃+emp. getSalary ());從上述示例可以看出,在代碼中完全屏蔽了底層持久化操作,和訪問應用程序空間的對 象一樣訪問持久化對象。而且不需要額外的代碼生成或者編譯步驟,從而降低了編程的復雜 度,提高軟件開發(fā)效率。上述實施例說明了一種基于代理的數(shù)據(jù)對象持久化方法及裝置。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權利要求
1.一種基于代理的數(shù)據(jù)對象持久化方法,其特征在于,包括根據(jù)用戶定義的接口,在運行時,生成接口的代理對象;由代理對象代理對持久化對象的操作。
2.根據(jù)權利要求l所述的數(shù)據(jù)對象持久化方法,其特征在于,所述生 成接口的代理對象的步驟包括為每個需要訪問的持久化的對象,根據(jù)其接口定義創(chuàng)建代理對象; 代理對象根據(jù)標識與持久化對象關聯(lián)。
3.根據(jù)權利要求l所述的數(shù)據(jù)對象持久化方法,其特征在于,所述對 持久化對象的操作包括創(chuàng)建持久化對象、刪除持久化對象、設置持久化對象內容、讀取持久化對象內容、對 象命名。
4.根據(jù)權利要求3所述的數(shù)據(jù)對象持久化方法,其特征在于,所述創(chuàng) 建持久化對象的步驟包括為對象生成唯一對象標識;根據(jù)接口定義和對象標識,在持久化空間中創(chuàng)建持久化對象,在運行空間創(chuàng)建代理對象。
5.根據(jù)權利要求3所述的數(shù)據(jù)對象持久化方法,其特征在于,所述刪 除持久化對象的步驟包括從持久化空間刪除持久化對象; 把代理對象標記為刪除。
6.根據(jù)權利要求3所述的數(shù)據(jù)對象持久化方法,其特征在于,所述設 置持久化對象內容,其特征在于對于固定復合類型的對象,如果屬性值不是代理對象,則在持久化空間中保存屬性的 值,否則,保存其對象標識對于可變復合類型的對象,如果元素的值不是代理對象,則在持久化空間中保存元素 的值,否則,保存其對象標識。
7.根據(jù)權利要求3所述的數(shù)據(jù)對象持久化方法,其特征在于,所述讀 取持久化對象內容,其特征在于對于固定復合類型的對象,如果屬性值不是代理類型,則直接把持久化空間的屬性值轉換為運行空間的屬性值對象,否則,為其創(chuàng)建一個代理對象;對于可變復合類型的對象,如果元素值不是代理類型,則直接把持久化空間的元素值 轉換為運行空間的屬性值對象,否則,為其創(chuàng)建一個代理對象。
8.根據(jù)權利要求3所述的數(shù)據(jù)對象持久化方法,其特征在于,所述對 象命名其特征在于在持久化空間中建立一個一對一的字符串(名字)與對象標識的映射,通過對此映射 的插入、刪除、修改和査詢操作實現(xiàn)對象的命名、除名、重命名、根據(jù)名字取得對象操作。
9. 一種數(shù)據(jù)對象持久化裝置,其特征在于,包括 一個存儲庫單元,用于緩存數(shù)據(jù)、創(chuàng)建代理對象、刪除對象; 一個以上的代理對象單元,用于代理應用程序對持久化對象的操作;一個以上適配器單元,用于把根據(jù)適配器接口來的操作轉換為對具體的持久化底層平 臺的操作。
10.根據(jù)權利要求9所述的數(shù)據(jù)對象持久化裝置,其特征在于,所述 代理對象單元,每個代理對象都通過唯一的對象標識與持久化的數(shù)據(jù)對象關聯(lián); 對于固定復合類型的接口,代理對其屬性的讀取、修改; 對于可變復合類型的接口,代理對其元素的增加、刪除、査找、修改。
11.根據(jù)權利要求9所述的數(shù)據(jù)對象持久化裝置,其特征在于,所述 適配器單元,所有的適配器單元使用統(tǒng)一的適配器接口,從而屏蔽各種持久化底層平臺的差巳升。
全文摘要
本發(fā)明公開了一種基于代理的數(shù)據(jù)對象持久化方法及裝置。所述方法包括根據(jù)用戶定義的接口,在運行時,生成接口的代理對象;通過對代理對象的操作,實現(xiàn)對持久化對象的操作。所述裝置包括存儲庫單元、代理對象單元、適配器單元;所述存儲庫單元,用于緩存數(shù)據(jù)、創(chuàng)建代理對象、刪除對象;所述代理對象單元,用于代理應用程序對持久化對象的操作;所述適配器單元,用于把根據(jù)適配器接口來的操作轉換為對具體的持久化底層平臺的操作。本發(fā)明可以簡化數(shù)據(jù)對象持久化操作,提高編程效率。
文檔編號G06F9/44GK101403971SQ200810304398
公開日2009年4月8日 申請日期2008年9月5日 優(yōu)先權日2008年9月5日
發(fā)明者李永武 申請人:李永武
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
大关县| 江城| 克山县| 滦南县| 南皮县| 凤翔县| 建阳市| 宜都市| 九龙坡区| 海林市| 灯塔市| 博乐市| 斗六市| 瑞昌市| 枝江市| 五台县| 团风县| 新宾| 那坡县| 鄂伦春自治旗| 迭部县| 永丰县| 安庆市| 富顺县| 轮台县| 扎兰屯市| 安化县| 驻马店市| 临高县| 泾源县| 浦北县| 崇文区| 林芝县| 萍乡市| 从江县| 富平县| 稻城县| 米泉市| 汤原县| 观塘区| 宝应县|