ObjectBox使用手册(一)
2018-12-29 本文已影响2168人
码农充电站
一、前言
本篇文章基于ObjectBox Java 2.2.0版本,主要针对Androd开发人员
希望你阅读本篇文章拥有以下知识
1. Android应用的基本开发能力
2. 一定的SQL基础
二、ObjectBox简介
- ObjectBox是一个超级快速的数据库,专门为IoT和移动设备构建
- 是第一个高性能的符合ACID的NoSQL数据库
- ObjectBox小于1MB,因此它是移动应用程序、小型IoT设备和IoT网关的理想解决方案
宣称的主要优势
- 超级快。宣称比竞争产品快10倍
- 跨平台。可以在Linux,Windows,Mac和iOS,Android,树莓的PI,ARM,嵌入式或containerized等上运行
- 体积小。不足1MB
- 是一个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操作
-
盒子操作对象 在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; } }
-
创建一个简单的实体类
@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; } }
-
创建统一对外数据库操作类
/** * 数据库操作统一管理类 */ 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); } }