java对象关系映射ROM
一、對象關(guān)系映射ORM概述
對象關(guān)系映射(Object-Relational Mapping,簡稱ORM)是一種為了解決程序的面向?qū)ο竽P团c數(shù)據(jù)庫的關(guān)系模型互不匹配問題的技術(shù);簡單的說,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù)(在Java中可以用XML或者是注解),將程序中的對象自動持久化到關(guān)系數(shù)據(jù)庫中或者將關(guān)系數(shù)據(jù)庫表中的行轉(zhuǎn)換成Java對象,其本質(zhì)上就是將數(shù)據(jù)從一種形式轉(zhuǎn)換到另外一種形式。
在ORM過程中最重要的概念是映射(Mapping),通過這種映射可以使業(yè)務(wù)對象與數(shù)據(jù)庫分離。從面向?qū)ο髞碚f,數(shù)據(jù)庫不應(yīng)該和業(yè)務(wù)邏輯綁定到一起,ORM則起到這樣的分離作用,使數(shù)據(jù)庫層透明,開發(fā)人員真正的面向?qū)ο蟆?/p> 下圖簡單說明了ORM在多層系統(tǒng)架構(gòu)中的這個作用。
(圖片來自網(wǎng)絡(luò)www.shsxt.com)
目前大多數(shù)項(xiàng)目或產(chǎn)品都使用關(guān)系型數(shù)據(jù)庫實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的存儲,這樣在開發(fā)過程中,常常有一些業(yè)務(wù)邏輯需要直接用寫SQL語句實(shí)現(xiàn),但這樣開發(fā)的結(jié)果是:遍地布滿SQL語句。這些高藕合的SQL語句給系統(tǒng)的改造和升級帶來很多無法預(yù)計(jì)的障礙。為了提高項(xiàng)目的靈活性,特別是快速開發(fā),ORM是一個不錯的選擇。舉個簡單的例子:在使用ORM的系統(tǒng)中,當(dāng)數(shù)據(jù)庫模型改變時(shí),不再需要理會邏輯代碼和SQL語句中涉及到該模型的所有改動,只需要將該模型映射的對象稍作改動,甚至不做改動就可以滿足要求。][3]
圖片來自網(wǎng)絡(luò)(上海尚學(xué)堂)
二、ORM特性及優(yōu)缺點(diǎn)
1、ORM特性
1.提高了開發(fā)效率。由于ORM可以自動對Entity對象與數(shù)據(jù)庫中的Table進(jìn)行字段與屬性的映射,所以我們實(shí)際可能已經(jīng)不需要一個專用的、龐大的數(shù)據(jù)訪問層。
2.ORM提供了對數(shù)據(jù)庫的映射,不用sql直接編碼,能夠像操作對象一樣從數(shù)據(jù)庫獲取數(shù)據(jù)。
2、ORM優(yōu)缺點(diǎn)
ORM的缺點(diǎn)是會犧牲程序的執(zhí)行效率和會固定思維模式。從系統(tǒng)結(jié)構(gòu)上來看,采用ORM的系統(tǒng)一般都是多層系統(tǒng),系統(tǒng)的層次多了,效率就會降低。ORM是一種完全的面向?qū)ο蟮淖龇?#xff0c;而面向?qū)ο蟮淖龇ㄒ矔π阅墚a(chǎn)生一定的影響。
在我們開發(fā)系統(tǒng)時(shí),一般都有性能問題。性能問題主要產(chǎn)生在算法不正確和與數(shù)據(jù)庫不正確的使用上。ORM所生成的代碼一般不太可能寫出很高效的算法,在數(shù)據(jù) 庫應(yīng)用上更有可能會被誤用,主要體現(xiàn)在對持久對象的提取和和數(shù)據(jù)的加工處理上,如果用上了ORM,程序員很有可能將全部的數(shù)據(jù)提取到內(nèi)存對象中,然后再進(jìn) 行過濾和加工處理,這樣就容易產(chǎn)生性能問題。
在對對象做持久化時(shí),ORM一般會持久化所有的屬性,有時(shí),這是不希望的。
但ORM是一種工具,工具確實(shí)能解決一些重復(fù),簡單的勞動。這是不可否認(rèn)的。但我們不能指望工具能一勞永逸的解決所有問題,有些問題還是需要特殊處理的,但需要特殊處理的部分對絕大多數(shù)的系統(tǒng),應(yīng)該是很少的。
感謝閱讀上海尚學(xué)堂文章,獲取更多文章或技術(shù)支持,請點(diǎn)擊 上海Java培訓(xùn)
總結(jié)
以上是生活随笔為你收集整理的java对象关系映射ROM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Arduino的光敏传感器和超声波测距传
- 下一篇: make的使用和Makefile规则和编