登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 967|回复: 0

实现Android数据持久化的3种方法与优劣比较

[复制链接]

11

主题

11

帖子

13

安币

手工艺人

发表于 2018-1-14 18:30:01 | 显示全部楼层 |阅读模式
如果对本篇文章感兴趣,请前往,原文地址:http://www.apkbus.com/blog-942559-76875.html

近日,从事MobIM开发工作。在工作中需要实现本地数据持久化缓存的操作。查看了下当下流行的几款比较受欢迎的开源框架。选取了比较有代表性的(GreenDAO 与Litepal)进行实现和与原生的Sqlite框架进行实现和比较。
   一、GreenDAO的介绍与实现
  1、GreenDAO的优点

  • 性能高,号称Android最快的关系型数据库
  • 内存占用小
  • 库文件比较小,小于100K,编译时间低,而且可以避免65K方法限制
  • 支持数据库加密  greendao支持SQLCipher进行数据库加密
  • 简洁易用的API
    2、最新的GreenDAO的版本为3.2.2。集成方式十分便捷和简单。Javabean就是数据库对象,对JavaBean的操作,直接映射到数据库 上。避免手写建表SQL的繁琐,和手写数据库操作的代码。并且支持各类函数级别的增、删、改、查。
    3、GreenDAO的集成步骤
     1)在Project的build.gradle里添加greendao-gradle-plugin。  
     classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'         

     2)在App的build.gradle里声明引用GreenDAO的 plugin 。  
     apply plugin: 'org.greenrobot.greendao'

           
     3)引用GreenDAO的工程jar包。   compile 'org.greenrobot:greendao:3.2.0'
            

     4)执行Sync Project with Gradle Files 。根据以上配置,下载和引用GreenDAO的类库。
                  

        5)创建数据库映射的实体类。其中,@Entity 、@Id、@Property 等都是GreenDAO特有的元注解,可以通过标注JavaBean来告诉GreenDAO这是个数据库表,以及表对应的字段名。使用注解的方式来定义实 体类,通过gradle插件生成相应的代码,十分方便 。
@Entity
public class User {
            public static final int MAN = 1 ;
            public static final int WOMAN = 0 ;

            @Id(autoincrement = true)
            private Long id;

            //@Unique
   
private String name;

            @Property(nameInDb = "db_age")
            private String age;

            private String date;

            private String regdate;
                    .............
          6)标注完成后,再执行下 4)步骤,会自动生成 get、set 方法和构造函数。
                  

         7)针对User类的数据库操作类也已经自动生成了。它就是 UserDao 。获取UserDAO需要用到DaoSession 和DaoMaster。通过以下步骤获取UserDAO。以此类推通过定义 Xyz类的JavaBean就可以自动生成 XyzDao。
           



了解DaoMaster和DaoSession与XyzDao的关系
                          

DaoMaster: 使用greenDAO的切入点。DaoMaster保存数据库对象(SQLiteDatabase)并管理特定模式的DAO类(而不是对象)。 它具有静态方法来创建表或将它们删除。 其内部类OpenHelper和DevOpenHelper是在SQLite数据库中创建模式的SQLiteOpenHelper实现。一个 DaoMaster就代表着一个数据库的连接。
DaoSession: 管理特定模式的所有可用DAO对象,您可以使用其中一个getter方法获取。 DaoSession还为实体提供了一些通用的持久性方法,如插入,加载,更新,刷新和删除。 DaoSession可以让我们使用一些Entity的基本操作和获取Dao操作类,DaoSession可以创建多个,每一个都是属于同一个数据库连接的。
XyzDAO:数据访问对象(DAO)持续存在并查询实体。 对于每个实体,GreenDAO生成一个DAO。 它比DaoSession有更多的持久化方法,例如:count,loadAll和insertInTx。
        8) GreenDAO的数据库一般操作。


                        

二、LitePal的介绍与实现
     1、LitePal的介绍
         LitePal非常小,集成起来非常方便,通过建立JavaBean继承DataSupport的方式,直接使其JavaBean具有了,数据库操作的相关方法。
     2、LitePal的实现
          1)在App的build.gradle里导入LitePal的类库。   compile 'org.litepal.android:core:1.6.0'
               

        2)在资源文件夹assets下建立litepal.xml文件。
               



                  

      3)建立JavaBean类,并继承DataSupport。
                  

     4)声明LitePalApplication。    android:name="org.litepal.LitePalApplication"
                     



     5)LitePal的数据库一般操作。
                        



                     

三、Android SQLite原生数据库介绍与实现
     1、Android SQLite原生数据库介绍
         Android才用了小型的关系数据SQLite,占用资源很少。支持各种数据库操作。
     2、Android SQLite原生数据库的实现
        大家对Android 原生数据库的实现应该比较熟悉,这里不再详细赘述,主要指出主要步骤。
         


         


四、3种数据库实现方式在具体实践中的比较
      在魅族metal手机上的测试结果:执行效率 SQLite原生 > GreenDAO > Litepal
   

五、分析原因与使用方式推荐
     SQLite原生集成虽然费时,但是其中没有封装各类复合查询和各类判断,效率最高。
     GreenDAO开始配置的时候步骤比较繁琐,使用了注解类动态生成操作类,接口函数封装很完善,功能强大,如果不涉及到大规模的数据库操作推荐使用。
      Litepal配置简单,集成速度很快,但是要配置LitepalApplication,有一定侵入式,在一些小型快速的项目上可以推荐使用。


文/Mob开发者平台 Android开发专家 徐化杰
  继续阅读全文



想在安卓巴士找到更多优质博文,可移步博客区

如果对本篇文章感兴趣,请前往,
原文地址:
http://www.apkbus.com/blog-942559-76875.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表