Realm(Java)数据库使用文档(入门)

1.1 基本要求

  • Android Studio 1.5.1+
  • JDK 7.0+
  • Android SDK最新版本
  • 最新的Realm 7.0版本: Android API 16+ (Android 4.1+).

说明:Realm不支持Android以外的Java。不支持Eclipse开发,请迁移到Android Studio。

1.2 安装

配置Gradle插件.

第1步: 在项目级别的build.gradle文件添加依赖路径。

使用测试版本7.0.0-beta:

buildscript {
    repositories {
        jcenter()
        google()
        maven {
            url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
        }
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:7.0.0-beta-SNAPSHOT"
    }
}

allprojects {
    repositories {
        jcenter()
        google()
        maven {
            url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
        }
    }
}

使用最新的稳定版本:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:6.0.2"
    }
}

继续,确保项目工程是“Projects”视图。点击Android Studio左上角的下拉菜单选择“Projects”:

image

在“Projects” 视图,选择项目级别的build.gradle文件:

image

第2步:在应用级别的build.gradle文件引用realm-android插件。

apply plugin: 'realm-android'

在“Projects”视图,找到应用级别的build.gradle文件:

image

完成这两项配置后,只需同步gradle依赖项即可。 如果要从v0.88之前的Realm版本升级,还需要清理gradle项目(./gradlew clean)。

下面是两个修改build.gradle文件的示例:

您是否要使用Realm同步所有数据库?
所有与同步相关的文档已移至我们的平台文档

其他构建系统

不支持Maven和Ant构建系统。感兴趣的可以在GitHub查看:

ProGuard配置作为Realm库的一部分提供。 这意味着您无需在ProGuard配置中添加任何特定于Realm的规则。

1.2.1 示例代码

View more on GitHub

Realm可让您以安全、持久和快速的方式有效地编写App的模型层。如下:

// 创建model类并继承RealmObject
public class Dog extends RealmObject {
    private String name;
    private int age;

    // ... getters()和setters()方法 ...
}

public class Person extends RealmObject {
    @PrimaryKey
    private long id;
    private String name;
    private RealmList<Dog> dogs; // 声明一对多关系

    // ... getters()和setters()方法 ...
}

// 像普通的Java对象一样使用它们
Dog dog = new Dog();
dog.setName("Rex");
dog.setAge(1);

// 初始化Realm(每个App仅做一次)
Realm.init(context);

// 获取此线程的Realm实例对象
Realm realm = Realm.getDefaultInstance();

// 查询所有2岁以下的狗
final RealmResults<Dog> puppies = realm.where(Dog.class).lessThan("age", 2).findAll();
puppies.size(); // => 0,因为尚未将任何狗添加到Realm

// 在事务中保留您的数据
realm.beginTransaction();
final Dog managedDog = realm.copyToRealm(dog); // 取得非托管对象
Person person = realm.createObject(Person.class); // 直接创建托管对象
person.getDogs().add(managedDog);
realm.commitTransaction();

// 数据更改时将通知监听器
puppies.addChangeListener(new OrderedRealmCollectionChangeListener<RealmResults<Dog>>() {

    @Override
    public void onChange(RealmResults<Dog> results, OrderedCollectionChangeSet changeSet) {
        // 查询结果通过细粒度的通知实时更新。
        changeSet.getInsertions(); // => [0] is added.
    }
});

// 异步更新后台线程上的对象
realm.executeTransactionAsync(new Realm.Transaction() {

    @Override
    public void execute(Realm bgRealm) {
        Dog dog = bgRealm.where(Dog.class).equalTo("age", 1).findFirst();
        dog.setAge(3);
    }
}, new Realm.Transaction.OnSuccess() {

    @Override
    public void onSuccess() {
        // 原始查询和Realm对象将自动更新。
        puppies.size(); // => 0,因为没有幼犬年龄小于2岁
        managedDog.getAge();   // => 3,狗的年龄被更新
    }
});

1.3 查看Realm数据库

如果您在使用Realm时需要帮助,请查看 StackOverflow 答案以获取详细说明。

1.3.1 Realm Studio

Realm Studio是我们首屈一指的开发工具,能让您轻松管理Realm数据库和Realm平台。 使用Realm Studio,您可以打开和编辑本地和同步的Realms,并管理任何Realm Object Server实例。 它支持Mac,Windows和Linux。

image

1.3.2 Stetho Realm

您还可以将Stetho-Realm插件配置到Stetho,这是Facebook创建的Chrome浏览器的Android调试工具。

Stetho-Realm不是由Realm正式维护的。

1.4 Realm初始化

您必须先对其进行初始化,然后才能在应用程序中使用Realm,这只需要执行一次。

Realm.init(context);

您必须提供一个Android Context对象。初始化Realm最好是MyApplication上的onCreate中:

public class MyApplication extends Application {

  @Override
  public void onCreate() {
    super.onCreate();
    Realm.init(this);
  }
}

如果你创建了自己的application,你必须要注册到AndroidManifest.xml文件中:

<application
  android:name=".MyApplication"
  ...
/>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章