• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一款安卓SQLite數(shù)據(jù)庫(kù)對(duì)象關(guān)系映射框架的開發(fā)

      2019-11-13 01:33:45王巖施一飛
      科技視界 2019年30期
      關(guān)鍵詞:安卓框架

      王巖 施一飛

      【摘 要】安卓操作系統(tǒng)內(nèi)嵌的SQLite數(shù)據(jù)庫(kù)適用于在移動(dòng)設(shè)備保存少量的數(shù)據(jù),但目前業(yè)界一直缺少適合SQLite數(shù)據(jù)庫(kù)的映射框架,能公開源代碼的則更為罕見。本文就開發(fā)效率提升和容錯(cuò)問題等方面,描述了一款SQLite對(duì)象關(guān)系映射框架的設(shè)計(jì)實(shí)現(xiàn)思路。并以實(shí)際案例,對(duì)比使用前后的效率提升結(jié)果。

      【關(guān)鍵詞】對(duì)象關(guān)系映射;SQLite;框架;安卓

      中圖分類號(hào): TP277 文獻(xiàn)標(biāo)識(shí)碼: A文章編號(hào): 2095-2457(2019)30-0051-002

      DOI:10.19694/j.cnki.issn2095-2457.2019.30.024

      了解安卓系統(tǒng)的人都知道,SQLite是一款開源的輕量級(jí)關(guān)系型數(shù)據(jù)庫(kù),安卓系統(tǒng)原生內(nèi)建了SQLite的實(shí)現(xiàn),以文件存儲(chǔ)的方式在移動(dòng)設(shè)備中存儲(chǔ)數(shù)據(jù)。而現(xiàn)在針對(duì)SQLite數(shù)據(jù)庫(kù)的對(duì)象關(guān)系映射,開發(fā)了一款新的框架,解決了SQLite在編程時(shí)的效率和容錯(cuò)問題,它的名稱是ChopinLite。這款框架既可作為安卓系統(tǒng)開發(fā)的實(shí)用工具,也可作為本科或高職專業(yè)移動(dòng)開發(fā)課程的內(nèi)容。

      根據(jù)以往的體驗(yàn),在使用Java語(yǔ)言進(jìn)行各類數(shù)據(jù)庫(kù)的相關(guān)操作時(shí),會(huì)經(jīng)常用到Hibernate等框架;而且在Java語(yǔ)言編程教學(xué)中,一般也會(huì)把Hibernate框架作為教學(xué)內(nèi)容。當(dāng)體驗(yàn)過使用Hibernate框架給編程帶來(lái)的便利后,會(huì)發(fā)現(xiàn)進(jìn)入安卓開發(fā)時(shí),對(duì)于SQLite數(shù)據(jù)庫(kù)并未有類似框架的支持。又因?yàn)榫?jiǎn)內(nèi)存的需要,安卓系統(tǒng)不適合使用較復(fù)雜的大型框架,只能使用輕量級(jí)的框架。而目前能支持SQLite數(shù)據(jù)庫(kù)的第三方框架種類欠豐富,功能欠完善,操作也欠優(yōu)化。以目前較為流行的OrmLite框架為例,其在連接時(shí)需要手動(dòng)定義輔助類;定義映射及關(guān)聯(lián)關(guān)系時(shí)所用的標(biāo)識(shí)符過長(zhǎng)且不夠明確;操作時(shí)需要手動(dòng)處理異常。這些不足之處引發(fā)了進(jìn)一步開發(fā)更為簡(jiǎn)單實(shí)用的新框架的需求,因此本框架應(yīng)運(yùn)而生。本框架的優(yōu)勢(shì)在于:

      (1)彌補(bǔ)不足:本框架可以彌補(bǔ)目前SQLite數(shù)據(jù)庫(kù)的第三方框架的各種不足,實(shí)現(xiàn)搭建便捷、功能定位適當(dāng)、操作優(yōu)化的目的。

      (2)填補(bǔ)空白:目前國(guó)內(nèi)還沒有公開發(fā)行的類似框架,主要都是公司內(nèi)部的產(chǎn)權(quán)技術(shù),因此本框架在某種程度上可以填補(bǔ)國(guó)內(nèi)空白。

      (3)輔助教學(xué):本框架一方面能夠滿足實(shí)際生產(chǎn)中的簡(jiǎn)單安卓項(xiàng)目的快速開發(fā),同時(shí)又可以作為課堂教學(xué)的輔助工具,甚至其自身的開發(fā)過程也可以作為教學(xué)內(nèi)容,使學(xué)生能夠快速掌握對(duì)象關(guān)系映射的原理和方法。

      本框架的設(shè)計(jì)理念是精簡(jiǎn)和高效,其大致來(lái)自桌面平臺(tái)的Hibernate框架,但進(jìn)行了大幅度的優(yōu)化,同時(shí)摒棄了其他類似框架的各種不足之處,給使用者提供了極大的便利。使用者無(wú)須編寫任何配置文件,也基本無(wú)須派生其他多余的操作類和接口。無(wú)論是在搭建數(shù)據(jù)表結(jié)構(gòu)還是在操作實(shí)體時(shí),使用者都只需使用框架中已經(jīng)實(shí)現(xiàn)的各種操作方法,無(wú)須二次開發(fā)。

      圖1

      本框架核心組件包含連接和初始化(OpenHelper)、實(shí)體模板(Entity)、實(shí)體標(biāo)注(annotations)、實(shí)體操作(Dao)和輔助工具(utils)。這些核心組件建立在安卓SQLite數(shù)據(jù)庫(kù)的操作接口之上,并為安卓APP的開發(fā)提供支持。

      在這些核心組件中,OpenHelper可以進(jìn)行數(shù)據(jù)庫(kù)的初始化連接,進(jìn)而根據(jù)已定義的實(shí)體及其關(guān)聯(lián)關(guān)系,自動(dòng)生成數(shù)據(jù)表及其字段,也可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份和重建;而Entity則是用來(lái)定義上述實(shí)體的模板,封裝了包含實(shí)體標(biāo)識(shí)(ID)在內(nèi)的各個(gè)字段的Java Bean操作,這些字段可通過annotation進(jìn)行標(biāo)注,如標(biāo)注為表、列、多對(duì)一關(guān)聯(lián)、多對(duì)多關(guān)聯(lián)等;在這之后,可以使用Dao進(jìn)行各種實(shí)體操作,如添加、修改、刪除實(shí)體,或以各種指定條件查詢實(shí)體等。在使用上述核心組件時(shí),輔助工具也是不可或缺的。使用本框架的輔助工具可以定義模糊查詢條件、組合查詢條件和聚合函數(shù),可以保存查詢結(jié)果,也可以更加便捷地定義日期和時(shí)間。

      設(shè)計(jì)這些核心組件時(shí)使用了泛型、內(nèi)部類和反射原理,使框架盡可能輕量化,結(jié)構(gòu)盡可能簡(jiǎn)化,操作盡可能簡(jiǎn)潔。在此基礎(chǔ)上,本框架通過內(nèi)部算法,將使用者的意圖轉(zhuǎn)化為對(duì)應(yīng)的SQL語(yǔ)句,并將語(yǔ)句的執(zhí)行結(jié)果重新封裝為使用者所需的實(shí)體或數(shù)值。

      使用本框架的步驟非常簡(jiǎn)單:先定義實(shí)體類,再進(jìn)行數(shù)據(jù)表結(jié)構(gòu)的搭建,最后進(jìn)行實(shí)體操作。

      實(shí)體類只需從實(shí)體模板派生,并對(duì)每個(gè)字段標(biāo)注映射關(guān)系和關(guān)聯(lián)關(guān)系即可;在搭建數(shù)據(jù)表結(jié)構(gòu)時(shí),只需將事先定義好的若干實(shí)體類作為參數(shù),調(diào)用初始化或備份方法即可,而且還可以選擇是否在操作過程中顯示自動(dòng)生成的SQL語(yǔ)句;在實(shí)體操作時(shí),只需調(diào)用簡(jiǎn)單的方法即可實(shí)例化操作類,進(jìn)而添加、刪除或更新實(shí)體,以及根據(jù)各種條件查詢實(shí)體、計(jì)算聚合函數(shù)等。

      本框架在安全性方面,也盡可能與可擴(kuò)展性平衡,盡量隱藏?zé)o須使用者擴(kuò)展的資源,使使用方式趨于規(guī)范統(tǒng)一。

      下面以一個(gè)常見的用戶注冊(cè)和登錄功能的案例來(lái)說(shuō)明本框架的使用方法和原理:

      如果采用MVC結(jié)構(gòu),則由service(控制層)實(shí)現(xiàn)用戶注冊(cè)和登錄的功能邏輯,dao(模型層)實(shí)現(xiàn)實(shí)體數(shù)據(jù)的操作。本案例旨在對(duì)比采用和不采用本框架的區(qū)別,從而說(shuō)明采用本框架將大幅提高開發(fā)效率。

      不使用框架編寫Service實(shí)現(xiàn)類的login方法:

      使用框架編寫后的版本

      由此可見,采用本框架后,類結(jié)構(gòu)和代碼更簡(jiǎn)練,條理性更強(qiáng)。

      猜你喜歡
      安卓框架
      iPhone不卡的秘密曝光:安卓也能享受
      框架
      MIPS安卓平臺(tái)上ARM二進(jìn)制翻譯系統(tǒng)
      廣義框架的不相交性
      文物表情包
      WTO框架下
      法大研究生(2017年1期)2017-04-10 08:55:06
      一種基于安卓系統(tǒng)的手機(jī)側(cè)抓包分析方法
      關(guān)于原點(diǎn)對(duì)稱的不規(guī)則Gabor框架的構(gòu)造
      一種基于OpenStack的云應(yīng)用開發(fā)框架
      基于Hadoop的DDoS檢測(cè)框架
      福建省| 阿城市| 卢湾区| 陆川县| 惠安县| 大埔县| 苏尼特左旗| 莒南县| 内黄县| 民乐县| 娱乐| 巫山县| 渭源县| 名山县| 乌兰浩特市| 大连市| 修水县| 资源县| 陇南市| 比如县| 岳普湖县| 大同县| 商都县| 临沂市| 舒兰市| 东平县| 乐至县| 桃源县| 肇源县| 苏尼特右旗| 蒙山县| 萨嘎县| 宿州市| 茂名市| 鹤山市| 彰化县| 汉寿县| 沛县| 方城县| 大同市| 庆元县|