freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于json的異構(gòu)數(shù)據(jù)庫(kù)整合研究_畢業(yè)論文-資料下載頁(yè)

2025-07-01 16:44本頁(yè)面

【導(dǎo)讀】基于JSON的異構(gòu)數(shù)據(jù)庫(kù)整合研究。第5章基于JSON的數(shù)據(jù)庫(kù)映射中間件的開發(fā)、測(cè)試及評(píng)價(jià)...............31

  

【正文】 is = new ObjectIutputStream(fos); 4)從 ois 里讀取 obj,即 (),獲得對(duì)象 obj; 5)關(guān)閉 ois; 可以看到 Java 里面的序列化與反序列化過程實(shí)際上與 JSON 的賦值和 eavl 是一致的。 JSON 的賦值是得到 JSON 文本, eval過程是通過 JSON 文本得到 JavaScript對(duì)象。 那么有沒有可能將 POJO 對(duì)象直接轉(zhuǎn)換成 JSON、 JSON 轉(zhuǎn)換成 POJO 對(duì)象呢?答案是肯定的。 第 3 章 JSON 與 POJO 之間的映射研究 20 G e t t e r 、 S e t t e r 、t o S t r i n g 方 法r e f l e c t i o nP O J O 對(duì) 象J S O N 對(duì) 象 圖 37 JSON 與 POJO 對(duì)象的相互轉(zhuǎn)化示意圖 將 POJO 轉(zhuǎn)化為 JSON POJO 類的對(duì)象 作為最普通的 JavaBean,它既有屬性也有方法 , 他的屬性都是私有訪問權(quán)限,他的方法都是公共訪問權(quán)限 , 這些方法都是與屬性配套的存和取方法 [21]。顯然,其 存 和 取 方法 本身 不是我們需要的數(shù)據(jù),我們關(guān)心的是屬性, 所以在將 POJO 轉(zhuǎn)化成 JSON 的過程中,重要的是得到屬性的名稱和該屬性對(duì)應(yīng)的值。而做到這點(diǎn)是沒有問題的, Java 語(yǔ)言有反射機(jī)制( reflect) [22],通過 POJO 類的 class對(duì)象,就能得到所有的屬性的名稱,然后就能得到屬性對(duì)應(yīng)的值。所以將 POJO 直接轉(zhuǎn)化為 JSON 是可行。 以下 為將 POJO 對(duì)象轉(zhuǎn)化為 JSON 的示例代碼: public class Pojo2Json { public static void main(String[] args) throws JSONException { String json = {\name\:\reiz\}。 JSONObject jObj = new JSONObject(json)。 String name = (name)。 (initial, (0, 1).toUpperCase())。 String[] str = new String[] { Opera, Chrome, Gecko }。 (browsers, str)。 MapString, String map = new HashMapString, String()。 (meat, )。 (bean, 1kg)。 (rice, )。 (fruits, apples)。 (map, map)。 第 3 章 JSON 與 POJO 之間的映射研究 21 (jObj)。 } } 將 JSON 轉(zhuǎn)化為 POJO JSON 作為文本,在 Java 里面就是字符串。對(duì)字符串按照 JSON 的語(yǔ)法規(guī)則進(jìn)行解析,根據(jù) JSON 的 key 的字符串,獲得 POJO 類的 class 對(duì)象的 key 字符串對(duì)應(yīng) setter 方法。 將 JSON 融入 ORM 對(duì)象關(guān)系映射 模型 ( Object/Relation Mapping,簡(jiǎn)稱 ORM),是 跟著 現(xiàn)代 面向?qū)ο蟮?計(jì)算機(jī) 軟件開發(fā)方法 發(fā)展而 誕 生的。 現(xiàn)在企業(yè)級(jí)應(yīng)用開發(fā)中,因其著重業(yè)務(wù)的處理, 面向?qū)ο?模式 的開發(fā)方法 有助于提高軟件產(chǎn)品的開發(fā)周期、質(zhì)量,所以面向?qū)ο蟮拈_發(fā)方法是 主流開發(fā)方法 。而現(xiàn)在大多數(shù)企業(yè)都采用 關(guān)系 型 數(shù)據(jù)庫(kù)來持久化業(yè)務(wù) 數(shù)據(jù) , 關(guān)系數(shù)據(jù)和對(duì)象是 企業(yè)級(jí)應(yīng)用中 業(yè)務(wù)實(shí)體的兩種表現(xiàn)形式 [23],業(yè)務(wù)實(shí)體在 JVM 運(yùn)行時(shí)環(huán)境 中 以 對(duì)象 的形式存在 ,在 關(guān)系型 數(shù)據(jù)庫(kù)中表現(xiàn) 的表現(xiàn)形式為 關(guān)系數(shù) 據(jù)。 JVM 運(yùn)行時(shí)環(huán)境 中的對(duì)象 ,他們彼此 之間存在 持有 和繼承關(guān)系 。而 在關(guān)系型 數(shù)據(jù)庫(kù)中,關(guān)系 型 數(shù)據(jù) 庫(kù) 無法直接表達(dá)多對(duì)多 持有(關(guān)聯(lián)) 和繼承關(guān)系。 數(shù)據(jù)庫(kù) 對(duì)象關(guān)系映射 模型的 (ORM)系統(tǒng)一般以中間件的形式存在, 它 主要實(shí)現(xiàn) JVM 運(yùn)行時(shí)環(huán)境中的 對(duì)象到關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)的映射 [24]。 在這種情況下 , ORM模型派上用場(chǎng)了,它是銜接關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)和 JVM 運(yùn)行時(shí)環(huán)境中對(duì)象的橋梁,如圖 38 所示 : 圖 38 ORM 模型示意圖 現(xiàn)代數(shù)據(jù)庫(kù)應(yīng)用開發(fā)不可避免的要使用 ORM,將數(shù)據(jù)庫(kù)中每張數(shù)據(jù)表用一個(gè)類來表示,而數(shù)據(jù)表的每一項(xiàng)則 是對(duì)象,比如像 Hibernate、 MyBatis 這樣的框架中。POJO 指的就是 ORM 里面的 Object,可以確定的是 POJO 是 ORM 的一部分, JSON第 3 章 JSON 與 POJO 之間的映射研究 22 可以和 POJO對(duì)應(yīng)起來,那么這是不是意味著 POJO可以完美的融入 ORM模型呢?答案是肯定的。因?yàn)?JSON 與 POJO 是一對(duì)一的映射關(guān)系,而 POJO 作為 ORM 的Object 與數(shù)據(jù)庫(kù)的記錄也是一對(duì)一的關(guān)系。所以 JSON 與數(shù)據(jù)庫(kù)的記錄是一對(duì)一的關(guān)系。 圖 39 JSON 融入 ORM 示意圖 本章小結(jié) 本章 根據(jù) JSON 的語(yǔ)法特點(diǎn)研究了 JSON 的解碼。然后將 JSON 與 XML 作了比較,研究了 JSON 作為數(shù)據(jù)交換格式的優(yōu)勢(shì),為后文的研究奠定基礎(chǔ)。然后研究了 JSON 與 Java 語(yǔ)言的 POJO 的相互轉(zhuǎn)化,研究了具體實(shí)現(xiàn)。最后研究了如何將JSON 融入 JEE 的 ORM 框架。 第 4 章 異構(gòu)數(shù)據(jù)庫(kù)與 JSON 的映射研究 23 第 4 章 異構(gòu) 數(shù)據(jù)庫(kù)與 JSON 的映射研究 如果能夠?qū)崿F(xiàn) JSON 文 本與 關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù) 之間的 交 互,那么這就完成了絕大部分工作 。 然而 JSON 與數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄結(jié)構(gòu)不同 [25]、生存環(huán)境不同 。一方面,程序需要知道數(shù)據(jù)表結(jié)構(gòu)才能將數(shù)據(jù)轉(zhuǎn)換為 JSON;另一方面,程序只有在知道表結(jié)構(gòu)的前提下才能將 JSON 轉(zhuǎn)換為 POJO,進(jìn)而將 POJO 與數(shù)據(jù)庫(kù)記錄對(duì)應(yīng) 。這時(shí)候就需要一個(gè)配置文件來存儲(chǔ)了表結(jié)構(gòu)信息,以方便程序的讀取。而這一點(diǎn)是可行的,因?yàn)檫\(yùn)行中的系統(tǒng),數(shù)據(jù)庫(kù)表結(jié)構(gòu)相對(duì)固定,所以將數(shù)據(jù)庫(kù)表信息寫到相對(duì)固定的配置可以滿足運(yùn)行是需要。 關(guān)系模型 是 關(guān)系 型 數(shù)據(jù)庫(kù)的理論依據(jù),關(guān)系 型 數(shù)據(jù)庫(kù) 以 表的形式來表示 數(shù)據(jù)項(xiàng) , 而 JSON 依賴于配置文件 。建立 關(guān)系型數(shù)據(jù)庫(kù)的表 的記錄 與 JSON 文本 之間 的映射 關(guān)系 是本文成敗的關(guān)鍵,只有建立了完善的映射關(guān)系才算是真正意義上實(shí)現(xiàn)了功能 。 根據(jù)關(guān)系型數(shù)據(jù)庫(kù)的表結(jié)構(gòu)之間的 映射關(guān)系, 可以總結(jié)出 兩種數(shù)據(jù)映射的 基 本 方法 : 基于模型的映射方法 與 基于模板的映射方法 [26]。 基于模型的映射 指 是 : 當(dāng)把數(shù)據(jù)從數(shù)據(jù)庫(kù) 寫成 JSON 文本 或 是 把數(shù)據(jù)從 JSON傳送到數(shù)據(jù)庫(kù)時(shí), 既用到 內(nèi)嵌 SQL 命令 也用到 具體的模型?;谀0?的映射值得是:使用像中間件這樣的軟件依照模板處理,而這個(gè)模板中包含了 SQL 命令 [27]。 JSON 與異構(gòu)數(shù)據(jù)庫(kù)整合系統(tǒng)設(shè)計(jì) JSON 作為與平臺(tái)、語(yǔ)言無關(guān)的數(shù)據(jù)格式,它為異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的整合提供標(biāo)準(zhǔn)的格式 。 由于 JSON 可以很方便的作為 Java 語(yǔ)言的輸出數(shù)據(jù),而且 Java 具有跨平臺(tái)的特性, Java 可以運(yùn)行任何支持 Java 虛擬機(jī)的地方 [28]( JVM,即 Java Virtual Machine)。所以采用 Java 平臺(tái)作為中間件的平臺(tái),并采用 JSON 作為數(shù)據(jù)交換格式,在此基礎(chǔ)上實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)整合中間件 [29]。 以上說明了采用 Java + JSON 技術(shù)作為異構(gòu)數(shù)據(jù)系統(tǒng)集成方案的可行性。思路是建立異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)表與 JSON 之間的映射聯(lián)系,然后異構(gòu)數(shù)據(jù)可以輕松的發(fā)布為 JSON 文本,然后數(shù)據(jù)接收端再按照 JSON 的語(yǔ)法規(guī)則解析,這樣就實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)交換了。 要使多個(gè)異構(gòu)數(shù)據(jù)庫(kù)整合的關(guān)鍵是要建立統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),這個(gè)數(shù) 據(jù)結(jié)構(gòu)的數(shù)據(jù)要能夠映射到關(guān)系型數(shù)據(jù)庫(kù)的關(guān)系模型,然后關(guān)系型數(shù)據(jù)的關(guān)系模型能夠映射到這個(gè)統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)。 JSON 有如下優(yōu)點(diǎn): 1) 結(jié)構(gòu)嚴(yán)格。無論關(guān)系型數(shù)據(jù)庫(kù)的表間結(jié)構(gòu)關(guān)系有多復(fù)雜,根據(jù)第 3 章對(duì)JSON 的介紹, JSON 都可以通過嵌套表達(dá)出這種關(guān)系。 2) 語(yǔ)義明確。 JSON 以 key/value 的形式來存儲(chǔ)數(shù)據(jù),其中 key 是關(guān)系型數(shù)據(jù)的數(shù)據(jù)表的名稱,而 value 是該數(shù)據(jù)表的某一記錄的值。而數(shù)據(jù)庫(kù)的數(shù)據(jù)表一般都第 4 章 異構(gòu)數(shù)據(jù)庫(kù)與 JSON 的映射研究 24 是有業(yè)務(wù)意義的,所以 JSON 的可讀性很強(qiáng),一目了然。 3) 純文本格式?,F(xiàn)在幾乎所以的語(yǔ)句都支持 JSON,都有相應(yīng)的 生成和解析工具。所以在任何平臺(tái)對(duì) JSON 進(jìn)行加工處理都是很簡(jiǎn)便的。 4) 跨平臺(tái)。 JSON 作為一種獨(dú)立與語(yǔ)言和平臺(tái)無關(guān)的數(shù)據(jù)格式,任何平臺(tái)都有對(duì) JSON 的相應(yīng)支持。 5)易交互。如果應(yīng)用程序是 Web 應(yīng)用的話,中間件可以直接向 Web 應(yīng)用返回JSON。因?yàn)?Web 應(yīng)用需要給瀏覽器端返回的正是 JSON。 JSON 因其結(jié)構(gòu)嚴(yán)謹(jǐn)、語(yǔ)言明確,可以以簡(jiǎn)單的方式表達(dá)出關(guān)系型數(shù)據(jù)庫(kù)的復(fù)雜的表間關(guān)系; JSON 因其純文本、跨平臺(tái),故可以滿足異構(gòu)數(shù)據(jù)庫(kù)、異構(gòu)系統(tǒng)的整合需要; JSON 因其易交互,故降低了開發(fā)者的開發(fā)難度。 JSON 與異構(gòu)數(shù)據(jù)庫(kù)的映射技術(shù) 以關(guān)系模型為理論基礎(chǔ)的關(guān)系型數(shù)據(jù)庫(kù)與結(jié)構(gòu)化的數(shù)據(jù)類型 JSON怎樣關(guān)聯(lián)映射起來是本文要做的重點(diǎn)工作,是關(guān)乎本文的成敗關(guān)鍵。映射方案合理的話不但解決了異構(gòu)數(shù)據(jù)庫(kù)的整合問題,也保證的了整合后數(shù)據(jù)庫(kù)系統(tǒng)的性能,方案不合理的話就達(dá)不整合的目的了。 基于模板的映射方法 這種方法的核心思想是定義統(tǒng)一的對(duì)外訪問數(shù)據(jù)庫(kù)系統(tǒng)的接口。每個(gè)接口對(duì)應(yīng)一個(gè) SQL 語(yǔ)句。該接口返回的就是該 SQL 語(yǔ)句執(zhí)行完畢后得到的記錄所轉(zhuǎn)換成的SQL。 ?xml version= ? select id=selectAuthor parameterType=int resultType=hashmap select * from Author where ID = {id} /select insert id=insertAuthor parameterType= insert into Author (id,username,password,,bio) values ({id},{username},{password},{},{bio}) /insert update id=updateAuthor parameterType= update Author set 第 4 章 異構(gòu)數(shù)據(jù)庫(kù)與 JSON 的映射研究 25 username = {username}, password = {password}, = {}, bio = {bio} where id = {id} /update delete id=deleteAuthor” parameterType=int delete from Author where id = {id} /delete 代碼段 以上代碼段 作為模板的內(nèi)容針對(duì) Author 數(shù)據(jù)表定義了選擇接口selectPerson()、插入接口 insertAuthor()、更新接口 updateAuthor()、刪除接口deleteAuthor()。這樣外不系統(tǒng)都可以通過這 4 個(gè)統(tǒng)一的接口來實(shí)現(xiàn)對(duì)象 Author 數(shù)據(jù)表的 CURD 操作了。 基于 數(shù)據(jù)庫(kù)模型 的 JSON 映射方法 與基于模板的映射方法不同,基于模型的映 射方法是通過關(guān)系數(shù)據(jù)庫(kù)的模型 信息來將數(shù)據(jù)庫(kù)的記錄轉(zhuǎn)換成 JSON。關(guān)系數(shù)據(jù)庫(kù)的模型信息主要有兩類: 數(shù)據(jù)表的信息和 POJO 對(duì)象的屬性的。關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)表屬于關(guān)系模型, POJO 對(duì)象屬于對(duì)象模型,這兩種方式都屬于數(shù)據(jù)庫(kù)的模型,所以這種方法稱為基于數(shù)據(jù)庫(kù)模型的 JSON 映射方法。 數(shù)據(jù)庫(kù)模型體現(xiàn)在很多方面,如 POJO 對(duì)象的反射信息,Hibernate 的 hbm配置文件。所以有兩種途徑來實(shí)現(xiàn)基于數(shù)據(jù)庫(kù)模型的 JSON 映射方法,分別是基于 ORM 的配置文件和基于 Java 的反射。 在使用 Hibernate、 MyBatis 這樣的 ORM 框架時(shí),他們都會(huì)使用 ORM 配置文件,用來建立數(shù)據(jù)庫(kù)的數(shù)據(jù)表和 POJO 類的詳細(xì)映射。同樣本文也可以借助 ORM的配置文來獲取信息,用來封裝 JSON。 ORM 框架如下的配置文件如下,他們說明了數(shù)據(jù)表的主鍵、各個(gè)字段,并其將其與 POJO 的屬性作來對(duì)應(yīng),同時(shí)也指出了其數(shù)據(jù)類型。下面代碼是一個(gè)標(biāo)準(zhǔn)的 Hibernate 的 ORM 配置文件。其 person 指的是數(shù)據(jù)表的名字,而 是 POJO 的完整名稱, id 表示的是主鍵, properties 指的是常規(guī)屬性。 hibernatemapping class name= table=person id name=primarykey column=key type=
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1