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