ObjectBox使用手册(一)

ObjectBox使用手册-Android

一、前言

本篇文章基于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

ObjectBox使用手册(一)

如果访问不到那么程序安装后,打开命令行 输入以下命令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;
        }
    }
    
  3. 创建统一对外数据库操作类

    /**
     * 数据库操作统一管理类
     */
    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);
        }
    }