一户魏、常用的數(shù)據(jù)庫解決方案
Step1:創(chuàng)建庫叼丑、創(chuàng)建表
? ? ? (1)用桌面工具(SQLiteManager)、Firefox的插件等SQLite工具生成本地?cái)?shù)據(jù)庫文件星立。系統(tǒng)運(yùn)行時(shí)檢查指定目錄是否有數(shù)據(jù)庫文件存在绰垂,如果存在則跳過直接執(zhí)行Step2劲装。不存在則講代碼包中的XXX.sqlite文件copy到指定目錄下占业,初始化DB對象纺酸,執(zhí)行Step2餐蔬。
?? ? ?(2)檢查指定目錄是否有數(shù)據(jù)庫文件存在樊诺,不存在則創(chuàng)建文件秃嗜,存在在執(zhí)行建表語句锅锨。然后執(zhí)行Step2必搞。
Step2:數(shù)據(jù)庫字段更新檢查
? ? ? 為滿足需求的拓展、變更等等霜第,我們的系統(tǒng)可能需要去修改表泌类,比如在用戶表里面加一個(gè)第三放IM的關(guān)聯(lián)末誓,這樣我們就需要新增一個(gè)字段喇澡;也比如某某字段需要增加約束等等晴玖。
? ? ?針對某某版本以下的系統(tǒng)呕屎、查詢表中是否有某一個(gè)字段,執(zhí)行具體的SQL蹂安。
Step3:數(shù)據(jù)的查詢田盈、新增允瞧、更新述暂、刪除
(1)Entity類(對應(yīng)表的字段)
(2)Model類(表的直接操作類疼蛾,提供表的增刪改查接口)
(3)DBManager(單利類,整合多個(gè)Model,提供接口調(diào)用妒挎;數(shù)據(jù)緩存處理等)
? ?但是在開發(fā)中酝掩,會(huì)發(fā)現(xiàn)總有很多的SQL語句要寫,更新表也很麻煩镶苞。昨天看到一篇針對數(shù)據(jù)庫使用ORM思想數(shù)據(jù)庫處理。頗有收獲聋涨,結(jié)合這篇文章怎么才能做到開發(fā)更方便牍白、模塊更清晰呢狸涌。
? 之前我們先了解下什么是ORM??
? ?ORM-對象關(guān)系映射(英語:Object Relation Mapping,簡稱ORM惶楼,或O/RM歼捐,或O/R mapping)
二、LazyDatabase
?帶著以上的問題剥扣,學(xué)習(xí)各路大神的思路,實(shí)現(xiàn)一個(gè)簡單易用的數(shù)據(jù)庫框架晦炊。
(1)提供庫的自動(dòng)創(chuàng)建
從配置文件讀取數(shù)據(jù)庫將被存儲(chǔ)的路徑和數(shù)據(jù)庫名稱創(chuàng)建數(shù)據(jù)庫文件
(2)提供表的自動(dòng)創(chuàng)建
在實(shí)體類初始化時(shí)創(chuàng)建表,對比字段是否有更新。
(3)提供表的自動(dòng)更新
檢查數(shù)據(jù)庫大版本宋彼,是否直接升級(jí)庫文件,數(shù)據(jù)自動(dòng)拷貝莱坎。對比表的字段和現(xiàn)有字段碴卧。
(4)提供無SQL對數(shù)據(jù)的增刪改查
(5)提供數(shù)據(jù)緩存
預(yù)加載表,達(dá)到內(nèi)存上限時(shí)按隊(duì)列方式擠壓荧飞。
(6)提供接口數(shù)據(jù)緩存
網(wǎng)絡(luò)層接口返回的數(shù)據(jù),插入表時(shí)關(guān)聯(lián)URL,結(jié)合第5條運(yùn)行睛藻。
(7)提供內(nèi)存數(shù)據(jù)庫
單獨(dú)使用內(nèi)存的存儲(chǔ)方式,系統(tǒng)退出時(shí)數(shù)據(jù)清空讥邻。
?后續(xù)會(huì)更新第二篇文章兴使,提供源代碼以及實(shí)現(xiàn)思路和使用方法盹牧。