ObjectBox使用手册(一)

作者: 码农充电站 | 来源:发表于2018-12-29 14:32 被阅读2168次

    一、前言

    本篇文章基于ObjectBox Java 2.2.0版本,主要针对Androd开发人员
    希望你阅读本篇文章拥有以下知识
    1. Android应用的基本开发能力
    2. 一定的SQL基础
    

    二、ObjectBox简介

    1. ObjectBox是一个超级快速的数据库,专门为IoT和移动设备构建
    2. 是第一个高性能的符合ACID的NoSQL数据库
    3. ObjectBox小于1MB,因此它是移动应用程序、小型IoT设备和IoT网关的理想解决方案

    宣称的主要优势

    1. 超级快。宣称比竞争产品快10倍
    2. 跨平台。可以在Linux,Windows,Mac和iOS,Android,树莓的PI,ARM,嵌入式或containerized等上运行
    3. 体积小。不足1MB
    4. 是一个NoSQL数据库,API简单易用

    三、环境配置

    3.1 Gradle配置

    添加下面的内容到根目录build.gradle (project 级别的)中:

    buildscript {
        ext.objectboxVersion = '2.2.0'
        dependencies {
            classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
        }
    }
    

    如果需要通过电脑浏览器浏览ObjectBox存储的数据

    需要添加下面的内容到 app's build.gradle (module level):

    dependencies {
        debugImplementation "io.objectbox:objectbox-android-objectbrowser:$objectboxVersion"
        releaseImplementation "io.objectbox:objectbox-android:$objectboxVersion"
    }
    
    // 注意下面的内容放到 dependencies 语句块的后面
    apply plugin: 'io.objectbox'
    

    反之,如果不需要浏览直接添加下面的内容到 app's build.gradle (module level)即可:

    apply plugin: 'io.objectbox' // after applying Android plugin
    

    3.2 开启通过电脑浏览器浏览ObjecBox数据(可选)

    依赖配置上面已说明

    清单文件配置如下:

    <!-- Required to provide the web interface -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- Required to run keep-alive service when targeting API 28 or higher -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    

    手机需要连接adb(也就是连接上AndroidStudio)

    浏览器访问

    http://localhost:8090/index.html

    1545971864354.png

    如果访问不到那么程序安装后,打开命令行 输入以下命令adb forward tcp:8090 tcp:8090

    再次尝试

    3.3 基本使用流程

    1. 盒子初始化
    2. 创建数据库表结构映射实体类
    3. CRUD操作
    
    1. 盒子操作对象 在Application中初始化

      public class DemoApplication extends Application {
          @Override
          public void onCreate() {
              super.onCreate();
      
           //初始化操作
              initObjectBox();
          }
          
      
          private BoxStore boxStore;
          private void initObjectBox() {
              //第一次没运行之前,MyObjectBox默认会有报错提示,可以忽略。创建实体类, make之后报错就会不提示
              boxStore = MyObjectBox.builder().androidContext(this).build();
              if (BuildConfig.DEBUG) {//开启浏览器访问ObjectBox
                  boolean started = new AndroidObjectBrowser(boxStore).start(this);
                  Log.i("ObjectBrowser", "Started: " + started);
              }
              DataManager.getInstance().init(this);//数据库统一操作管理类初始化
          }
      
          public BoxStore getBoxStore() {
              return boxStore;
          }
      }
      
    2. 创建一个简单的实体类

      @Entity
      public class UserEntity{
          @Id
          long id;
      
          @Unique
          @Index
          @NameInDb("USERNAME")
          public String username;
      
          public UserEntity(String username) {
              this.username = username;
          }
          //为了ObjectBox在构造实体时提高性能,还需要提供一个全属性构造函数
          public UserEntity(long id, String username) {
              this.id = id;
              this.username = username;
          }
      }
      
    1. 创建统一对外数据库操作类

      /**
       * 数据库操作统一管理类
       */
      public class DataManager {
          private static DataManager dataManager;
      
          public static synchronized DataManager getInstance() {
              if (dataManager == null) {
                  dataManager = new DataManager();
              }
              return dataManager;
          }
      
          public BoxStore boxStore;
          public Box<UserEntity> userEntityBox;
      
          public void init(DemoApplication demoApplication) {
              boxStore = demoApplication.getBoxStore();
              initUserEntityBox();
          }
      
          private void initUserEntityBox() {
              //对应操作对应表的类
              userEntityBox = boxStore.boxFor(UserEntity.class);
          }
      }
      
    给你鸡腿 扫一扫关注

    相关文章

      网友评论

        本文标题:ObjectBox使用手册(一)

        本文链接:https://www.haomeiwen.com/subject/fvoulqtx.html