Orm框架介绍和常见的Android Orm框架
先介紹一下ORM的概念,以前也一直聽(tīng)說(shuō),不過(guò)沒(méi)詳細(xì)了解啥意思。其全稱叫做對(duì)象關(guān)系映射(Object Relation Mapping),是一種程序設(shè)計(jì)技術(shù),用于實(shí)現(xiàn)面向?qū)ο缶幊陶Z(yǔ)言里不同類型系統(tǒng)的數(shù)據(jù)之間的轉(zhuǎn)換。從效果上說(shuō),它其實(shí)是創(chuàng)建了一個(gè)可在編程語(yǔ)言里使用的“虛擬對(duì)象數(shù)據(jù)庫(kù)”。
面向?qū)ο笫菑能浖こ袒驹瓌t(如耦合、聚合、封裝)的基礎(chǔ)上發(fā)展起來(lái)的,而關(guān)系數(shù)據(jù)庫(kù)則是從數(shù)學(xué)理論發(fā)展而來(lái)的. ?兩者之間是不匹配的.而ORM作為項(xiàng)目中間件形式實(shí)現(xiàn)數(shù)據(jù)在不同場(chǎng)景下數(shù)據(jù)關(guān)系映射. 對(duì)象關(guān)系映射是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的現(xiàn)象的技術(shù).ORM就是這樣而來(lái)的。
目前ORM框架的產(chǎn)品非常之多,除了個(gè)大公司、組織的產(chǎn)品外,其他一些小團(tuán)隊(duì)也在推出自己的ORM框架。目前流行的ORM框架有如下這些產(chǎn)品:
(1)Enitiy EJB:Enitiy EJB實(shí)際上也是一種ORM技術(shù),這是一直備受爭(zhēng)議的組件技術(shù)。事實(shí)上,EJB為Java EE的蓬勃發(fā)展贏得了極高的聲譽(yù),EJB作為一種重量級(jí)、高花費(fèi)的ORM技術(shù)具有不可比擬的優(yōu)勢(shì)。就其他架構(gòu)設(shè)計(jì)來(lái)講,依然非常優(yōu)秀。即使現(xiàn)在十分流行的輕量級(jí)Java EE架構(gòu),其實(shí)質(zhì)是對(duì)經(jīng)典Java EE架構(gòu)的模仿——雖然存在些許的改進(jìn)。EJB3.1也采取了低侵入式的設(shè)計(jì),增加了Annotation,也具有極大的吸引力。
(2)hibernate:目前最流行的開(kāi)源ORM框架,已經(jīng)被選作JBoss的持久層解決方案。整個(gè)HIbernate項(xiàng)目也一并投入了Jboss的懷抱,而JBoss又加入了RedHat組織,所以現(xiàn)在Hibernate屬于RedHat 的一部分。Hibernate 靈巧的設(shè)計(jì)、優(yōu)秀的性能,還有其豐富的文檔都是其風(fēng)靡全球的重要因素。
(3)iBatis: Apache軟件基金組織的子項(xiàng)目。與其稱它為一種ORM框架,不如稱它為一中“SQL Mapping”框架。曾經(jīng)在J2EE的開(kāi)發(fā)中扮演非常重要的角色,但因?yàn)椴恢С执娲獾拿嫦驅(qū)ο蟛僮?#xff0c;因此現(xiàn)在逐漸地被取代。但是在一些公司,依然占有一席之地,特別是一些對(duì)數(shù)據(jù)訪問(wèn)特別靈活的地方,iBatis更加的靈活,它允許開(kāi)發(fā)人員直接編寫(xiě)SQL語(yǔ)句。
(4)TopLink:Oracle公司的產(chǎn)品,作為一個(gè)遵循OTN協(xié)議的商業(yè)產(chǎn)品,TopLink 在開(kāi)發(fā)過(guò)程中可以自由地下載和使用,但是一旦作為商業(yè)產(chǎn)品被使用,則需要收取費(fèi)用。由于這一點(diǎn),TopLink 的市場(chǎng)占有率不高。
(5)OBJ:Apache軟件基金組織的子項(xiàng)目。另一個(gè)開(kāi)源的ORM框架,可以說(shuō)是Apache作為iBatis之后的取代產(chǎn)品,也是非常優(yōu)秀的O/R Mapping框架,但是由于Hibernate 的廣芒太盛,所以并未有廣泛的使用,而且由于OJB的開(kāi)發(fā)文檔不是很多,這也影響了OJB的流行。
android 常見(jiàn)的Orm 框架:
下面先列出幾個(gè)ORM框架:ORMLite、greendao、ormndroid、androrm、ActiveAndroid。其中以前最早接觸過(guò)ormlite,GreenDao了解過(guò),其他的幾個(gè)真沒(méi)怎么見(jiàn)過(guò)。所以這里主要介紹ormlite和GreenDao。最開(kāi)始現(xiàn)在stackoverflow輸入sqlite orm關(guān)鍵字,搜索出了一些相關(guān)的文章:http://stackoverflow.com/search?q=sqlite+orm ,你會(huì)發(fā)現(xiàn)很有趣的是,ormlite的作者Gray和greenDao的開(kāi)發(fā)團(tuán)隊(duì)green robot同時(shí)出現(xiàn)在一些帖子中,向提問(wèn)者推薦他們的框架。當(dāng)然也會(huì)有一些熱心的朋友推薦ormdroid。其實(shí)不論在stackoverflow上還是官網(wǎng)上,greenDao的團(tuán)隊(duì)的比較都是針對(duì)ORMLite的,可見(jiàn),其主要的競(jìng)爭(zhēng)對(duì)手,或許稱互相促進(jìn)者更合適,畢竟他們沒(méi)有什么商業(yè)利益,完全開(kāi)源。所以開(kāi)源的ORM框架中,ormLite和greenDao是最火的。其它幾種就不做比較,有興趣的朋友可以到官網(wǎng)看下。下面對(duì)ORMLite和GreenDao做個(gè)簡(jiǎn)單的比較:
ormlite
基于注解和反射的的方式,導(dǎo)致ormlite性能有著一定的損失(注解其實(shí)也是利用了反射的原理)
優(yōu)點(diǎn):
文檔較全面,社區(qū)活躍,有好的維護(hù),使用簡(jiǎn)單,易上手。
缺點(diǎn):
基于反射,效率較低
GreenDao
官網(wǎng)中明確指明了其首要設(shè)計(jì)目標(biāo):
Maximum performance (probably the fastest ORM for Android):系能最大化
Easy to use APIs:便于使用
Highly optimized for Android:對(duì)于Android高度優(yōu)化
Minimal memory consumption:最小化內(nèi)存開(kāi)銷(xiāo)
Small library size, focus on the essentials:較小的文件體積,只集中在必要的部分上。
優(yōu)點(diǎn):
效率很高,插入和更新的速度是sqlite的2倍,加載實(shí)體的速度是ormlite的4.5倍。官網(wǎng)測(cè)試結(jié)果:http:/
/greendao-orm.com/features/
文件較小(<100K),占用更少的內(nèi)存 ,但是需要create Dao,
操作實(shí)體靈活:支持get,update,delete等操作
缺點(diǎn):
學(xué)習(xí)成本較高。其中使用了一個(gè)Java工程根據(jù)一些屬性和規(guī)則去generate一些基礎(chǔ)代碼,類似于javaBean但會(huì)有一些規(guī)則,另外還有QueryBuilder、Dao等API,所以首先要明白整個(gè)過(guò)程,才能方便使用。沒(méi)有ORMLite那樣封裝的完整,不過(guò)greenDao的官網(wǎng)上也提到了這一點(diǎn),正是基于generator而不是反射,才使得其效率高的多。
另外GreenDao支持Protocol buffers協(xié)議數(shù)據(jù)的直接存儲(chǔ) ,如果通過(guò)protobuf協(xié)議和服務(wù)器交互,不需要任何的映射。
Protocol Buffers協(xié)議:以一種高效可擴(kuò)展的對(duì)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行編碼的方式。google內(nèi)部的RPC協(xié)議和文件格式大部分都是使用它。
RPC:遠(yuǎn)程過(guò)程調(diào)用(Remote Procedure Call,RPC)是一個(gè)計(jì)算機(jī)通信協(xié)議,它是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。
可能因?yàn)镚reenDao的效率高,而且需要學(xué)習(xí)成本高點(diǎn),所以個(gè)人還是有興趣學(xué)一學(xué)的。接下來(lái)會(huì)發(fā)布一些GreenDao更詳細(xì)的文章,有對(duì)官方文檔的翻譯還有代碼的簡(jiǎn)單講解。或許以上內(nèi)容很簡(jiǎn)單,只是簡(jiǎn)單的介紹了下,對(duì)其它幾個(gè)框架并沒(méi)有做更多的介紹,有了解的朋友可以提出來(lái),大家一起探討下。
總結(jié)
以上是生活随笔為你收集整理的Orm框架介绍和常见的Android Orm框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 金融学习纲要与相关知识
- 下一篇: eclipse搭建Android开发环境