Realm
Realm是一個直接在手機,平板電腦或可穿戴設備中運行的移動數據庫。目前僅支持在Android運行。
特性
- 移動數據庫: Realm是第一個直接在手機,平板電腦和可穿戴設備內部運行的數據庫。
- 簡單:數據直接作為對象公開,並且可以通過代碼查詢,從而消除了對ORM充滿性能和維護問題的需求。
- 線程安全: Realm支持簡單的線程安全,關係和加密。
- 性能: Realm在常見操作上比原始SQLite更快,同時保持極其豐富的功能集。
項目熱度
標星: 10635
拷貝: 1670
貢獻人數: 84
最後更新: 2019-09-05
代碼提交活躍度:
推薦指數:【5】顆星
開發語言
開發語言:java
使用方法
在文件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 } });
項目地址
https://github.com/realm/realm-java