Realm 追加・更新・削除

追加、変更、削除処理は必ずトランザクションの中で行う

 // Obtain a Realm instance

 Realm realm = Realm.getDefaultInstance();

 realm.beginTransaction();

 //... オブジェクトの追加や更新 ...

 realm.commitTransaction();


変更のキャンセル

 realm.beginTransaction();

 User user = realm.createObject(User.class);

 // ...

 realm.cancelTransaction();


オブジェクトの作成

 realm.beginTransaction();

 User user = realm.createObject(User.class); // 新たなオブジェクトを作成

 user.setName("John");

 user.setEmail("john@corporation.com");

 realm.commitTransaction();


 または


 User user = new User("John");

 user.setEmail("john@corporation.com");

 // Realmへオブジェクトをコピーする。これ以降の変更は、返り値のオブジェクトに対して行う必要がある。

 realm.beginTransaction();

 User realmUser = realm.copyToRealm(user);

 realm.commitTransaction();


トランザクションブロック

 realm.executeTransaction(new Realm.Transaction() {

  @Override

  public void execute(Realm realm) {

   User user = realm.createObject(User.class);

   user.setName("John");

   user.setEmail("john@corporation.com");

  }

 });


非同期トランザクション

 realm.executeTransactionAsync(new Realm.Transaction() {

  @Override

  public void execute(Realm bgRealm) {

   User user = bgRealm.createObject(User.class);

   user.setName("John");

   user.setEmail("john@corporation.com");

  }

 }, new Realm.Transaction.OnSuccess() {

  @Override

  public void onSuccess() {

   // トランザクションは成功

  }

 }, new Realm.Transaction.OnError() {

  @Override

  public void onError(Throwable error) {

   // トランザクションは失敗。自動的にキャンセルされます

  }

 });


バイト配列の更新

 realm.executeTransaction(new Realm.Transaction() {

  @Override

  public void execute(Realm realm) {

   bytes[] bytes = realmObject.binary;

   bytes[4] = 'a';

   realmObject.binary = bytes; // 代入またはsetterの呼び出しが必要

  }

 });