官术网_书友最值得收藏!

1.4 對(duì)象關(guān)系映射(ORM)

在前面的幾節(jié)中,讀者已經(jīng)了解了JPA是對(duì)象關(guān)系映射ORM的框架。那么什么是ORM呢?ORM與傳統(tǒng)的Java持久化技術(shù)相比,有何優(yōu)勢(shì)呢?

1.4.1 什么是對(duì)象關(guān)系映射

對(duì)象關(guān)系映射(Object Relational Mapping,ORM)是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的現(xiàn)象的技術(shù)。這里的“O”表示的是對(duì)象,“R”表示的是關(guān)系型數(shù)據(jù)庫(kù),“M”表示的是對(duì)象和關(guān)系型數(shù)據(jù)庫(kù)之間的聯(lián)系。

下面舉一個(gè)具體的實(shí)例來(lái)說(shuō)明,有一個(gè)客戶(hù)類(lèi)Customer,有屬性id,姓名name和年齡age。有一個(gè)表tb_customer,有三個(gè)列,分別為id、name和age。那么如何將這兩者自動(dòng)關(guān)聯(lián)起來(lái)呢,這就需要對(duì)象關(guān)系映射,也就是JPA所要解決的問(wèn)題。這樣當(dāng)進(jìn)行ORM后,表中的一條記錄可以映射為類(lèi)的實(shí)例(對(duì)象),如圖1-8所示。

圖1-8 ORM示例

在“ORM”中,最重要的就是“R”,一旦將對(duì)象和關(guān)系型數(shù)據(jù)庫(kù)關(guān)聯(lián)起來(lái),那么操作對(duì)象就自動(dòng)地操作了數(shù)據(jù)庫(kù),而避免寫(xiě)大量的SQL語(yǔ)句。

1.4.2 對(duì)象關(guān)系映射模式

上面的例子中,只涉及一個(gè)表和類(lèi),是最簡(jiǎn)單的一對(duì)一映射。在ORM中,還有更為復(fù)雜的映射類(lèi)型,比如一對(duì)多、多對(duì)多映射等。無(wú)論是哪種類(lèi)型的映射,都遵循以下幾個(gè)基本原則。

● 類(lèi)通常映射為表。

● 類(lèi)中的屬性通常映射為表中的一列。

● 如果類(lèi)的屬性如集合類(lèi),則會(huì)涉及多個(gè)表的關(guān)聯(lián)映射。

有關(guān)各種映射模式的應(yīng)用,將在本書(shū)的以下章節(jié)中詳細(xì)講述,這里只簡(jiǎn)單介紹一下。

主站蜘蛛池模板: 石嘴山市| 栾城县| 清原| 兰考县| 乌鲁木齐县| 南部县| 花莲县| 成安县| 天全县| 英德市| 兴国县| 台东市| 珠海市| 克东县| 旅游| 乌恰县| 正阳县| 湘乡市| 隆化县| 金堂县| 武城县| 福海县| 驻马店市| 浑源县| 招远市| 调兵山市| 铜鼓县| 隆德县| 宝应县| 西平县| 北川| 尤溪县| 榆林市| 扬州市| 项城市| 江口县| 奉节县| 花莲市| 泉州市| 汝阳县| 邹城市|