亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        SQLite 關(guān)系映射插件中實體批量刷新和覆蓋的原理分析

        2022-06-23 01:08:46施一飛王明珠
        無線互聯(lián)科技 2022年7期
        關(guān)鍵詞:數(shù)據(jù)庫用戶功能

        王 巖,施一飛,王明珠

        (吉利學(xué)院,四川 成都 641423)

        0 引言

        在安卓系統(tǒng)中,其采用的是一款輕量化數(shù)據(jù)庫SQLite,編程時如果單純使用SQLite 原生的操作語句編寫,那么在效率和容錯方面會表現(xiàn)一般,如可以開發(fā)一款映射插件來服務(wù)和SQLite 數(shù)據(jù)庫的溝通,就會在一定程度上提升編寫程序的效率。經(jīng)過對國內(nèi)多個安卓程序產(chǎn)品項目的調(diào)研,發(fā)現(xiàn)安卓映射插件在應(yīng)用中均有著不同的程度,當(dāng)該程序?qū)τ诤蠖说臏贤坎皇呛艽髸r,可能就沒有必要安裝相關(guān)映射插件,當(dāng)然絕大多數(shù)的程序比較復(fù)雜,還要考慮和PC 平臺及Web 平臺功能的一致性[1],所以大多數(shù)都安裝有公開的或者自行研發(fā)的映射插件,方便對于數(shù)據(jù)庫的溝通,達(dá)到自身程序運(yùn)行目的。

        安卓系統(tǒng)的開發(fā)主要基于Java 語言,以往在使用Java 語言進(jìn)行各類數(shù)據(jù)庫的相關(guān)操作時,會經(jīng)常用到諸如Hibernate 或MyBatis 等框架[2]。但對于SQLite 數(shù)據(jù)庫,并未有類似的框架,并且安卓系統(tǒng)不適合使用較復(fù)雜的大型框架,只能使用一些輕量級的框架。如OrmLite 框架等,但目前能支持 SQLite 數(shù)據(jù)庫的第三方框架,其種類欠豐富,功能欠完善,操作也欠優(yōu)化[3]。

        1 功能介紹

        本次開發(fā)是在原有的ChopinLite 1.0 的版本上進(jìn)行功能優(yōu)化以及完善,之前的版本在添加刪除上不能夠進(jìn)行批量添加刪除,只能一次一次的進(jìn)行重復(fù)操作,且占用系統(tǒng)內(nèi)存,浪費(fèi)大量時間,操作不夠便捷,由此本次開發(fā)偏向批量操作等功能,著重開發(fā)以下5 個方面,本文就(4)(5)項的原理會加以重點(diǎn)說明。

        (1)實體批量增加功能:用戶在添加大量實體時,會浪費(fèi)很多時間,因此為了節(jié)約用戶的時間和提升用戶的工作效率,在以前的基礎(chǔ)上對其進(jìn)行了優(yōu)化,實現(xiàn)在數(shù)據(jù)庫中實體批量添加數(shù)據(jù)的功能。可以更加高效的操作數(shù)據(jù)庫中的內(nèi)容,節(jié)約了大量的操作的時間。

        (2)實體批量刪除功能:刪除數(shù)據(jù)的語句非常簡單,但是大量的刪除操作會消耗大部分時間,因此實體批量刪除操作應(yīng)運(yùn)而生。該功能在1.0 的基礎(chǔ)上進(jìn)行優(yōu)化,實現(xiàn)在數(shù)據(jù)庫中批量刪除數(shù)據(jù)的操作。

        (3)實體批量修改功能:增刪改作為數(shù)據(jù)庫的基礎(chǔ)操作,修改用戶數(shù)據(jù)也是經(jīng)常用到的功能之一。而修改數(shù)據(jù)的操作并不像添加和刪除實體那樣簡單,所需要的代碼極其煩瑣。因此在數(shù)據(jù)庫中實體批量修改就成了2.0 版本的重頭戲。

        (4)實體批量覆蓋功能:覆蓋操作是把本地數(shù)據(jù)上傳到數(shù)據(jù)庫,與批量刷新操作不同,批量覆蓋是對數(shù)據(jù)庫已有的實體做更新操作,沒有的做添加操作,以本地數(shù)據(jù)為準(zhǔn)。

        (5)實體批量刷新功能:刷新實體同樣是數(shù)據(jù)庫經(jīng)常進(jìn)行的操作。單個實體進(jìn)行刷新和批量實體刷新有所不同,需要先以數(shù)據(jù)庫為基準(zhǔn)進(jìn)行判斷,當(dāng)實體存在于數(shù)據(jù)庫時,進(jìn)行選擇操作,當(dāng)實體并未在數(shù)據(jù)庫中查詢到時,進(jìn)行添加操作。

        2 重點(diǎn)研究

        本次開發(fā)的框架摒棄了其他類似框架的不足之處,使用者無須編寫配置文件,僅需使用框架中已經(jīng)實現(xiàn)的各種操作方法,無須二次開發(fā)。該軟件的特性在于以非循環(huán)的方式實現(xiàn)增刪改查,更新和覆蓋的批量操作。

        2.1 批量添加

        在實現(xiàn)單個實體添加的基礎(chǔ)上,運(yùn)用全新的結(jié)構(gòu)化查詢語言(Tructured Query Language,SQL)語句實現(xiàn)實體批量添加,節(jié)約用戶操作時間,提升用戶的工作效率,更高效的操作數(shù)據(jù)庫的內(nèi)容,使用 數(shù)據(jù)訪問對象(Data Access Object,DAO)調(diào)用AddBatch 方法,可以批量添加實體。添加實體后,實體會自動獲得身份標(biāo)識號(Identity Document,ID),成為持久態(tài)。

        2.2 批量刪除

        刪除與批量添加的原理相同,使用獨(dú)特的 SQL 語句,實現(xiàn)一次操作,批量刪除的結(jié)果。解放用戶繁雜的重復(fù)操作的同時減少計算機(jī)運(yùn)行的壓力,節(jié)約資源,實現(xiàn)可持續(xù)發(fā)展。

        2.3 批量修改

        批量修改功能在一定程度上簡化修改的煩瑣過程,內(nèi)部程序僅采用一條 SQL 語句,達(dá)到批量修改的目的。使用 DAO 對象調(diào)用 EditBatch 方法,可以批量修改實體。(1)查詢再修改,FindAll 得到集合。(2)設(shè)置需要修改的實體的各類屬性。(3)最后修改集合或集合中的個例。

        2.4 批量刷新

        刷新實體的方法和其他功能有所不同,主要是調(diào)用了其他的方法。

        刷新是以反射再賦值的方式實現(xiàn)了實體的批量刷新,主要是通過反射拿取數(shù)據(jù)庫里的值,賦值回本地。將數(shù)據(jù)庫與本地數(shù)據(jù)兩者ID 做對比,若兩者中存在相同ID,則把數(shù)據(jù)庫中的數(shù)據(jù)下載到本地。若數(shù)據(jù)庫中沒有該ID,則將本地數(shù)據(jù)添加到數(shù)據(jù)庫中。

        使用 DAO 對象調(diào)用 AttachAndRefreshBatch 方法,可以更新實體,結(jié)果以數(shù)據(jù)庫為準(zhǔn),使用實例如下:

        2.5 批量覆蓋

        覆蓋的操作與刷新大同小異,本軟件的覆蓋操作以本地數(shù)據(jù)為準(zhǔn),將數(shù)據(jù)上傳到數(shù)據(jù)庫,與批量刷新操作不同的是,批量覆蓋是對數(shù)據(jù)庫已有的實體做更新操作,沒有的做添加操作。類似于上傳的原理,通過這樣的方式更新數(shù)據(jù)庫,使之兩邊數(shù)據(jù)保持一致。

        安卓使用Replace into 語句,輕松實現(xiàn)了預(yù)期功能,SQLite 數(shù)據(jù)庫是通過直接覆蓋的方式進(jìn)行操作的。批量覆蓋操作就是將數(shù)據(jù)庫與本地數(shù)據(jù)兩者ID 做對比,與刷新操作所不同的是:若兩者中存在相同ID,則把數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行更新操作。若數(shù)據(jù)庫中沒有該ID,則直接進(jìn)行添加操作。使用 DAO 對象調(diào)用AttachAndOverrideBatch 方法,可以更新實體,結(jié)果以數(shù)據(jù)庫為準(zhǔn),

        使用實例如下:

        3 結(jié)語

        安卓平臺相較于其他平臺,安卓具有開放性的優(yōu)勢,這就意味安卓擁有更多的開發(fā)者,更多的用戶和應(yīng)用。用戶和應(yīng)用的多樣性會對插件的需求大量增加,可以讓插件得到快速的發(fā)展。安卓還是一個開源平臺,可以提供種類繁多的函數(shù)庫和有用的工具,減少開發(fā)者的工作量,同時還能增加創(chuàng)新性和軟件的交互性。目前安卓平臺的相關(guān)實體映射的插件較少,增加了所研究的映射插件的實用性。

        在插件設(shè)計之初,并沒有考慮到用戶所使用的數(shù)據(jù)庫的多樣性的問題,只考慮了SQLite 數(shù)據(jù)庫。但實際上,一款優(yōu)秀的插件則應(yīng)該適應(yīng)眾多的軟件,而不能專用化。所以,在后續(xù)的開發(fā)中,我們要讓插件的適用范圍更廣,例如在MySQL、Oracle、SQL Server 等數(shù)據(jù)庫中都可以使用??梢栽贘ava SE 平臺使用Java 數(shù)據(jù)庫連接(Java Database Connect,JDBC) 工具向其他數(shù)據(jù)庫進(jìn)行移植,以此來滿足在多種數(shù)據(jù)庫中均可進(jìn)行使用的目的。

        綜上所述,本次開發(fā)增加了批量操作的多種功能,既節(jié)省了時間,又使代碼更加簡練,操作更方便,節(jié)約了程序的運(yùn)行內(nèi)存,解放了計算機(jī)的運(yùn)行壓力,為后續(xù)實體映射軟件的發(fā)展指明了新方向。

        猜你喜歡
        數(shù)據(jù)庫用戶功能
        也談詩的“功能”
        中華詩詞(2022年6期)2022-12-31 06:41:24
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        如何獲取一億海外用戶
        国内精品伊人久久久久网站| 人妻中出中文字幕在线| 久久精品国产9久久综合| 秋霞在线视频| 无码av免费精品一区二区三区 | 国产av一区二区三区香蕉| 国产av剧情刺激对白| 亚欧色一区w666天堂| 色偷偷888欧美精品久久久| 亚洲色欲综合一区二区三区| a级福利毛片| 青青草视频在线观看9| 日韩av无码一区二区三区| 另类内射国产在线| 被欺辱的高贵人妻被中出| 精品日韩一区二区三区av| 粉嫩小泬无遮挡久久久久久| 中文字幕有码无码av| 红杏性无码免费专区| 伊人久久大香线蕉av不变影院| 狠狠的干性视频| 男女真实有遮挡xx00动态图| 精品丝袜一区二区三区性色| 亚洲国产中文字幕在线视频综合| 国产精品毛片完整版视频| 精品人妻中文av一区二区三区| 日本精品啪啪一区二区| 亚洲国产精品日本无码网站| 国产成人无码免费网站| 26uuu欧美日本在线播放| 一本久久精品久久综合| 天堂а√在线最新版中文在线| 亚洲色大成网站www在线观看 | 久久亚洲av午夜福利精品一区 | 老熟妇嗷嗷叫91九色| 精品国品一二三产品区别在线观看| 国产精品香蕉在线观看| av在线免费播放网站| 精品人妻少妇av中文字幕| 欧美巨大巨粗黑人性aaaaaa | 国内精品视频一区二区三区|