ObjectBox入门

来源:互联网 发布:安卓软件开发编程论坛 编辑:程序博客网 时间:2024/06/18 04:45

最近在尝试一些新的数据库,发现这个ObjectBox很不错,强烈推荐!

现在翻译一下官方的简介,本文基于v1.3.4

官方github地址 Android Studio的具体配置可以看github上的说明。

原文地址

如何开始使用ObjectBox

ObjectBox是什么?它是手机端的数据库,方便对象持久化并且非常快速。
本章的介绍内容基于github的ObjectBox的工程实例。如果你已经了解了基础知识,也可以查看相应的说明。
建议下载工程来对照查看,这样你可以运行代码并完整的查看它。本文的样例工程在objectbox-example 文件夹里。该例子是一个简单android app,用来记录日记,可以输入文本来添加新日志,也可以点击一个存在的日志来删除它。

Note实体和Box类

首先我们进入src文件夹,你会发现note的类 Note.java. 它是数据库持久化对象类包含了Note的字段,例如id,text和data,其中@Entity@Id是必须要的两个注解,如下所示:
@Entitypublic class Note {     @Id    long id;     String text;    Date date;    ...}

简单来说,一个ObjectBox的实体是一个注解类并把它的成员属性对应的持久化在数据库中。你可以通过更改或者创建新的java类,并在类上新增注解,来扩展或者创建新的实体。创建实体类后,下一步是build工程,在Android Studio上通过Build > Make project。这样会触发ObjectBox实时编译生成必须要的类,如MyObjectBox.java, 还有一些ObjectBox内部会使用到的类。

插入和删除日志

查看新的日志是如何被添加到数据库中,查看NoteActivity类。首先我们需要一个和Note类关联的Box对象,我们可以在onCreate()中创建
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和其他

在demo中没有更新的操作,因为更新日志非常简单。只要更改Note实例的任意属性,并且调用put()方法就可以了,如下所示。
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,大体步骤如下

  1. 创建数据库表对应的映射类,本例中是Note.java
  2. Build工程,实时编译生成ObjectBox需要的类,如MyObjectBox.java,具体可以在文件夹 build/generated/source/apt/debug 下查看
  3. 在“App”的onCreate()里面创建boxStore,boxStore= MyObjectBox.builder().androidContext(App.this).build();
  4. 在Activity中获取box实例,notesBox= boxStore.boxFor(Note.class);
  5. 操作box来进行CRUD操作。

踩过的坑

==============

坑1: 先写实体类,编译后才有MyObjectBox

==============


吐槽一句:文本编辑器好难用……


待续:如何使用RX或者事务,有时间继续翻译


原创粉丝点击