最近在尝试一些新的数据库,发现这个ObjectBox很不错,强烈推荐!
现在翻译一下官方的简介,本文基于v1.3.4
官方github地址 Android Studio的具体配置可以看github上的说明。
如何开始使用ObjectBox
Note实体和Box类
@Entity
public class Note {
@Id
long id;
String text;
Date date;
...
}
简单来说,一个ObjectBox的实体是一个注解类并把它的成员属性对应的持久化在数据库中。你可以通过更改或者创建新的java类,并在类上新增注解,来扩展或者创建新的实体。创建实体类后,下一步是build工程,在Android Studio上通过Build > Make project。这样会触发ObjectBox实时编译生成必须要的类,如MyObjectBox.java, 还有一些ObjectBox内部会使用到的类。
插入和删除日志
notesBox=((App)getApplication()).getBoxStore().boxFor(Note.class);
注:在demo工程中,“APP”是一个继承自android.app.Application的类,适合存储BoxStore实例。
当用户点击添加按钮时,addNote()方法被调用。这样我们就创建了一个新的Note对象,并且使用Box把它放到的数据库中。
Note note = new Note(0, noteText, comment, new Date());
notesBox.put(note);
Log.d(App.TAG, "Inserted new note, ID: " + note.getId());
注意我们在创建note类的时候,id的值为0,在这种情况下,调用put()方法ObjectBox会自动给id赋值。
删除一个note也是很简单的,在ObejctBox里,直接调用box的remove()方法就可以了,请查看NoteClickListener:
notesBox.remove(note);
更新notes和其他
note.setText("This note has changed.");
noteDao.put(note);
Box类还有一些方法来put、find、query、count和remove,具体可以查看Box类。
安装数据库
现在你可以看到一些ObjectBox的操作,但是我们应该怎么获取到BoxStore呢。正常来说你只需要获取BoxStore一次在Application里面就好了。
boxStore = MyObjectBox.builder().androidContext(App.this).build();
请记住,ObjectBox是一种NoSQL的数据库,他不是基于SQL或者SQLite的数据库。因此你不需要创建类似于“CREATE TABLE” 的语句来初始化数据库表。
你可以在“App.class”里面添加getBoxStore()的方法,这样activities and fragments就可以迅速的获取到他们想要的boxes了,用来插入或者删除notes。
注:你不用关闭数据库,大多数的app都可以这样来使用。
总结
老外的文章一般都是比较细腻的,简单来说要使用ObjectBox,大体步骤如下
- 创建数据库表对应的映射类,本例中是Note.java
- Build工程,实时编译生成ObjectBox需要的类,如MyObjectBox.java,具体可以在文件夹 build/generated/source/apt/debug 下查看
- 在“App”的onCreate()里面创建boxStore,boxStore= MyObjectBox.builder().androidContext(App.this).build();
- 在Activity中获取box实例,notesBox= boxStore.boxFor(Note.class);
- 操作box来进行CRUD操作。
踩过的坑
==============
坑1: 先写实体类,编译后才有MyObjectBox
==============
吐槽一句:文本编辑器好难用……
待续:如何使用RX或者事务,有时间继续翻译