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"
  ...
/>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章