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