一、常用的数据库解决方案
Step1:创建库、创建表
(1)用桌面工具(SQLiteManager)、Firefox的插件等SQLite工具生成本地数据库文件。系统运行时检查指定目录是否有数据库文件存在,如果存在则跳过直接执行Step2。不存在则讲代码包中的XXX.sqlite文件copy到指定目录下,初始化DB对象,执行Step2。
(2)检查指定目录是否有数据库文件存在,不存在则创建文件,存在在执行建表语句。然后执行Step2。
Step2:数据库字段更新检查
为满足需求的拓展、变更等等,我们的系统可能需要去修改表,比如在用户表里面加一个第三放IM的关联,这样我们就需要新增一个字段;也比如某某字段需要增加约束等等。
针对某某版本以下的系统、查询表中是否有某一个字段,执行具体的SQL。
Step3:数据的查询、新增、更新、删除
(1)Entity类(对应表的字段)
(2)Model类(表的直接操作类,提供表的增删改查接口)
(3)DBManager(单利类,整合多个Model,提供接口调用;数据缓存处理等)
但是在开发中,会发现总有很多的SQL语句要写,更新表也很麻烦。昨天看到一篇针对数据库使用ORM思想数据库处理。颇有收获,结合这篇文章怎么才能做到开发更方便、模块更清晰呢。
之前我们先了解下什么是ORM?
ORM-对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping)
二、LazyDatabase
带着以上的问题,学习各路大神的思路,实现一个简单易用的数据库框架。
(1)提供库的自动创建
从配置文件读取数据库将被存储的路径和数据库名称创建数据库文件
(2)提供表的自动创建
在实体类初始化时创建表,对比字段是否有更新。
(3)提供表的自动更新
检查数据库大版本,是否直接升级库文件,数据自动拷贝。对比表的字段和现有字段。
(4)提供无SQL对数据的增删改查
(5)提供数据缓存
预加载表,达到内存上限时按队列方式挤压。
(6)提供接口数据缓存
网络层接口返回的数据,插入表时关联URL,结合第5条运行。
(7)提供内存数据库
单独使用内存的存储方式,系统退出时数据清空。
后续会更新第二篇文章,提供源代码以及实现思路和使用方法。