Realm是一個移動數據庫:SQLite和ORM的替代品

Realm

Realm是一個直接在手機,平板電腦或可穿戴設備中運行的移動數據庫。目前僅支持在Android運行。

特性

  • 移動數據庫: Realm是第一個直接在手機,平板電腦和可穿戴設備內部運行的數據庫。
  • 簡單:數據直接作為對象公開,並且可以通過代碼查詢,從而消除了對ORM充滿性能和維護問題的需求。
  • 線程安全: Realm支持簡單的線程安全,關係和加密。
  • 性能: Realm在常見操作上比原始SQLite更快,同時保持極其豐富的功能集。

項目熱度

標星: 10635

拷貝: 1670

貢獻人數: 84

最後更新: 2019-09-05

代碼提交活躍度:

Realm是一個移動數據庫:SQLite和ORM的替代品

推薦指數:【5】顆星

開發語言

開發語言:java

使用方法

Realm是一個移動數據庫:SQLite和ORM的替代品

在文件build.gradle添加依賴:

buildscript {
 repositories {
 jcenter()
 }
 dependencies {
 classpath "io.realm:realm-gradle-plugin:5.15.0"
 }
}在build.gradle頭部添加:
apply plugin: 'realm-android'

例子:

// Define your model class by extending RealmObject
public class Dog extends RealmObject {
 private String name;
 private int age;
 // ... Generated getters and setters ...
}
public class Person extends RealmObject {
 @PrimaryKey
 private long id;
 private String name;
 private RealmList dogs; // Declare one-to-many relationships
 // ... Generated getters and setters ...
}
// Use them like regular java objects
Dog dog = new Dog();
dog.setName("Rex");
dog.setAge(1);
// Initialize Realm (just once per application)
Realm.init(context);
// Get a Realm instance for this thread
Realm realm = Realm.getDefaultInstance();
// Query Realm for all dogs younger than 2 years old
final RealmResults puppies = realm.where(Dog.class).lessThan("age", 2).findAll();
puppies.size(); // => 0 because no dogs have been added to the Realm yet
// Persist your data in a transaction
realm.beginTransaction();
final Dog managedDog = realm.copyToRealm(dog); // Persist unmanaged objects
Person person = realm.createObject(Person.class); // Create managed objects directly
person.getDogs().add(managedDog);
realm.commitTransaction();
// Listeners will be notified when data changes
puppies.addChangeListener(new OrderedRealmCollectionChangeListener>() {
 @Override
 public void onChange(RealmResults results, OrderedCollectionChangeSet changeSet) {
 // Query results are updated in real time with fine grained notifications.
 changeSet.getInsertions(); // => [0] is added.
 }
});
// Asynchronously update objects on a background thread
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() {
 // Original queries and Realm objects are automatically updated.
 puppies.size(); // => 0 because there are no more puppies younger than 2 years old
 managedDog.getAge(); // => 3 the dogs age is updated
 }
});
Realm是一個移動數據庫:SQLite和ORM的替代品

項目地址

https://github.com/realm/realm-java


分享到:


相關文章: