一款非关系型数据库
优势
ObjectBox占用内存1-1.5mb
insert,delete,update,load,access性能突出
- 超快速:号称胜过测试过的所有嵌入式数据库
- 面向对象的 API: 没有 rows、columns 和 SQL,完全从0开始的对象(没有ORM,没有SQLite)
- 反应性:对数据变化的反应简单而强大,使用ObjectBox中的反应数据观察器或与RxJava集成。
- 多平台:已经支持安卓和java,ios和MacOs正在集成
- 简单的线程:ObjectBox返回的对象可以在所以线程中运行
- 没有手动模式迁移:ObjectBox负责添加,删除和重命名属性的新对象版本,意味着数据库的升级不再需要我们自己管理版本号,ObjectBox内部会自动帮我们管理
ObjectBox基本(大致流程)
1. 添加依赖
2.先创建含注解 @Entity 的实体,并添加主键注解 @Id 。
3.build生成MyObjectBox
4.初始化MyObject构建BoxStore
5.获取BoxStore开启查询
添加依赖
app build.gradle
debugImplementation "io.objectbox:objectbox-android-objectbrowser:$objectboxVersion"
releaseImplementation "io.objectbox:objectbox-android:$objectboxVersion"
apply plugin: 'io.objectbox' 必须添加
Project build.gradle
classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
创建实例
@Entity声明这是一个实例,每一个实例都需要有@Id来表明主键,id为long型,可以自己赋值,也可以让objectbox自己赋值
实例创建完成之后,切记要给实例创建get和set方法
然后make project 会自动生成MyObjectBox,用于构建BoxStore;
新建一个application,初始化boxstore,使用ObjectBox的入口,管理Boxs
Box 持久化和查询实体,每一个实体类都会有一个box
初始化
BoxStore boxStore = MyObjectBox.builder().androidContext(this).build();
Box<GalleryCatalog> galleryBox = boxStore.boxFor(GalleryCatalog.class);
查询
List<GalleryCatalog> galleryCatalogs;
galleryCatalogs = DataManager.getInstance().getGalleryCatalogBox().query().build().find();
galleries = galleryBox.query().equal(Gallery_.photo, true).build().find();