999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2019-11-13 01:33:45王巖施一飛
科技視界 2019年30期

王巖 施一飛

【摘 要】安卓操作系統(tǒng)內(nèi)嵌的SQLite數(shù)據(jù)庫(kù)適用于在移動(dòng)設(shè)備保存少量的數(shù)據(jù),但目前業(yè)界一直缺少適合SQLite數(shù)據(jù)庫(kù)的映射框架,能公開(kāi)源代碼的則更為罕見(jiàn)。本文就開(kāi)發(fā)效率提升和容錯(cuò)問(wèn)題等方面,描述了一款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是一款開(kāi)源的輕量級(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)系映射,開(kāi)發(fā)了一款新的框架,解決了SQLite在編程時(shí)的效率和容錯(cuò)問(wèn)題,它的名稱是ChopinLite。這款框架既可作為安卓系統(tǒng)開(kāi)發(fā)的實(shí)用工具,也可作為本科或高職專業(yè)移動(dòng)開(kāi)發(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)過(guò)使用Hibernate框架給編程帶來(lái)的便利后,會(huì)發(fā)現(xiàn)進(jìn)入安卓開(kāi)發(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í)符過(guò)長(zhǎng)且不夠明確;操作時(shí)需要手動(dòng)處理異常。這些不足之處引發(fā)了進(jìn)一步開(kāi)發(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)還沒(méi)有公開(kāi)發(fā)行的類似框架,主要都是公司內(nèi)部的產(chǎn)權(quán)技術(shù),因此本框架在某種程度上可以填補(bǔ)國(guó)內(nèi)空白。

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

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

圖1

本框架核心組件包含連接和初始化(OpenHelper)、實(shí)體模板(Entity)、實(shí)體標(biāo)注(annotations)、實(shí)體操作(Dao)和輔助工具(utils)。這些核心組件建立在安卓SQLite數(shù)據(jù)庫(kù)的操作接口之上,并為安卓APP的開(kāi)發(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操作,這些字段可通過(guò)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ǔ)上,本框架通過(guò)內(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)用初始化或備份方法即可,而且還可以選擇是否在操作過(guò)程中顯示自動(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è)常見(jiàn)的用戶注冊(cè)和登錄功能的案例來(lái)說(shuō)明本框架的使用方法和原理:

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

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

使用框架編寫(xiě)后的版本

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

主站蜘蛛池模板: 69免费在线视频| 亚洲国产av无码综合原创国产| 国产视频a| 久久久久亚洲AV成人网站软件| 午夜无码一区二区三区在线app| 免费在线a视频| 456亚洲人成高清在线| 国产三级韩国三级理| 伊伊人成亚洲综合人网7777| 日韩免费毛片视频| 一级毛片在线直接观看| 国产精品3p视频| 日本爱爱精品一区二区| a毛片免费观看| 亚洲一本大道在线| 国产亚洲视频免费播放| 久久99国产精品成人欧美| 亚洲最新在线| 亚洲精品无码久久毛片波多野吉| 国产成人无码AV在线播放动漫| 男人的天堂久久精品激情| 99re精彩视频| AV老司机AV天堂| 国产亚洲精久久久久久久91| 97se亚洲综合不卡| 国产白浆在线| 本亚洲精品网站| 青草国产在线视频| 免费看a毛片| 免费看av在线网站网址| 成人午夜免费视频| 狠狠色成人综合首页| 亚洲狼网站狼狼鲁亚洲下载| 国产99热| 久久中文字幕不卡一二区| 潮喷在线无码白浆| 国产欧美在线| 日韩区欧美国产区在线观看| 乱人伦中文视频在线观看免费| 色综合天天综合| 国产福利免费在线观看| 亚洲乱强伦| 亚洲欧美日韩动漫| 毛片免费视频| 久久77777| 欧美 亚洲 日韩 国产| 欧美激情视频二区| 日韩精品免费在线视频| 经典三级久久| 福利一区三区| 国产在线精品人成导航| 精品小视频在线观看| 91久久偷偷做嫩草影院精品| 国产色婷婷视频在线观看| 欧美成人午夜在线全部免费| 国产福利小视频高清在线观看| 国产午夜一级淫片| 亚洲国产欧美国产综合久久 | 在线播放国产99re| 老司机久久99久久精品播放| 国产激情国语对白普通话| 欧美激情成人网| 欧美综合一区二区三区| 片在线无码观看| 国产一级小视频| 国产乱人伦偷精品视频AAA| 国产日韩欧美中文| 九色91在线视频| 国产性爱网站| 久久久国产精品无码专区| 九九精品在线观看| 无码AV高清毛片中国一级毛片| 国产剧情无码视频在线观看| 国产亚洲欧美在线人成aaaa| 日韩中文字幕亚洲无线码| 亚洲中文字幕无码爆乳| 无码一区中文字幕| 国产一级二级在线观看| 在线另类稀缺国产呦| 亚洲水蜜桃久久综合网站 | 国产微拍精品| 亚洲嫩模喷白浆|