日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java对象关系映射ROM

發(fā)布時(shí)間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java对象关系映射ROM 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、對(duì)象關(guān)系映射ORM概述

對(duì)象關(guān)系映射(Object-Relational Mapping,簡(jiǎn)稱ORM)是一種為了解決程序的面向?qū)ο竽P团c數(shù)據(jù)庫(kù)的關(guān)系模型互不匹配問(wèn)題的技術(shù);簡(jiǎn)單的說(shuō),ORM是通過(guò)使用描述對(duì)象和數(shù)據(jù)庫(kù)之間映射的元數(shù)據(jù)(在Java中可以用XML或者是注解),將程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫(kù)中或者將關(guān)系數(shù)據(jù)庫(kù)表中的行轉(zhuǎn)換成Java對(duì)象,其本質(zhì)上就是將數(shù)據(jù)從一種形式轉(zhuǎn)換到另外一種形式。

在ORM過(guò)程中最重要的概念是映射(Mapping),通過(guò)這種映射可以使業(yè)務(wù)對(duì)象與數(shù)據(jù)庫(kù)分離。從面向?qū)ο髞?lái)說(shuō),數(shù)據(jù)庫(kù)不應(yīng)該和業(yè)務(wù)邏輯綁定到一起,ORM則起到這樣的分離作用,使數(shù)據(jù)庫(kù)層透明,開(kāi)發(fā)人員真正的面向?qū)ο蟆?/p> 下圖簡(jiǎn)單說(shuō)明了ORM在多層系統(tǒng)架構(gòu)中的這個(gè)作用。

(圖片來(lái)自網(wǎng)絡(luò)www.shsxt.com)

目前大多數(shù)項(xiàng)目或產(chǎn)品都使用關(guān)系型數(shù)據(jù)庫(kù)實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的存儲(chǔ),這樣在開(kāi)發(fā)過(guò)程中,常常有一些業(yè)務(wù)邏輯需要直接用寫(xiě)SQL語(yǔ)句實(shí)現(xiàn),但這樣開(kāi)發(fā)的結(jié)果是:遍地布滿SQL語(yǔ)句。這些高藕合的SQL語(yǔ)句給系統(tǒng)的改造和升級(jí)帶來(lái)很多無(wú)法預(yù)計(jì)的障礙。為了提高項(xiàng)目的靈活性,特別是快速開(kāi)發(fā),ORM是一個(gè)不錯(cuò)的選擇。舉個(gè)簡(jiǎn)單的例子:在使用ORM的系統(tǒng)中,當(dāng)數(shù)據(jù)庫(kù)模型改變時(shí),不再需要理會(huì)邏輯代碼和SQL語(yǔ)句中涉及到該模型的所有改動(dòng),只需要將該模型映射的對(duì)象稍作改動(dòng),甚至不做改動(dòng)就可以滿足要求。

][3]

圖片來(lái)自網(wǎng)絡(luò)(上海尚學(xué)堂)

二、ORM特性及優(yōu)缺點(diǎn)
1、ORM特性

1.提高了開(kāi)發(fā)效率。由于ORM可以自動(dòng)對(duì)Entity對(duì)象與數(shù)據(jù)庫(kù)中的Table進(jìn)行字段與屬性的映射,所以我們實(shí)際可能已經(jīng)不需要一個(gè)專用的、龐大的數(shù)據(jù)訪問(wèn)層。

2.ORM提供了對(duì)數(shù)據(jù)庫(kù)的映射,不用sql直接編碼,能夠像操作對(duì)象一樣從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)。

2、ORM優(yōu)缺點(diǎn)

ORM的缺點(diǎn)是會(huì)犧牲程序的執(zhí)行效率和會(huì)固定思維模式。從系統(tǒng)結(jié)構(gòu)上來(lái)看,采用ORM的系統(tǒng)一般都是多層系統(tǒng),系統(tǒng)的層次多了,效率就會(huì)降低。ORM是一種完全的面向?qū)ο蟮淖龇?#xff0c;而面向?qū)ο蟮淖龇ㄒ矔?huì)對(duì)性能產(chǎn)生一定的影響。

在我們開(kāi)發(fā)系統(tǒng)時(shí),一般都有性能問(wèn)題。性能問(wèn)題主要產(chǎn)生在算法不正確和與數(shù)據(jù)庫(kù)不正確的使用上。ORM所生成的代碼一般不太可能寫(xiě)出很高效的算法,在數(shù)據(jù) 庫(kù)應(yīng)用上更有可能會(huì)被誤用,主要體現(xiàn)在對(duì)持久對(duì)象的提取和和數(shù)據(jù)的加工處理上,如果用上了ORM,程序員很有可能將全部的數(shù)據(jù)提取到內(nèi)存對(duì)象中,然后再進(jìn) 行過(guò)濾和加工處理,這樣就容易產(chǎn)生性能問(wèn)題。

在對(duì)對(duì)象做持久化時(shí),ORM一般會(huì)持久化所有的屬性,有時(shí),這是不希望的。
但ORM是一種工具,工具確實(shí)能解決一些重復(fù),簡(jiǎn)單的勞動(dòng)。這是不可否認(rèn)的。但我們不能指望工具能一勞永逸的解決所有問(wèn)題,有些問(wèn)題還是需要特殊處理的,但需要特殊處理的部分對(duì)絕大多數(shù)的系統(tǒng),應(yīng)該是很少的。

感謝閱讀上海尚學(xué)堂文章,獲取更多文章或技術(shù)支持,請(qǐng)點(diǎn)擊 上海Java培訓(xùn)

總結(jié)

以上是生活随笔為你收集整理的java对象关系映射ROM的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。