Realm,为移动设备而生!替代 SQLite 和 Core Data。为你省下数周的时间和数千行的代码,帮你创造出更棒的用户体验。–Realm官网
背景
说到手机数据库,一般都是想到SQLite。今天我给大家推荐Realm。
Realm是一个直接在手机,平板电脑或可穿戴设备中运行的移动数据库。目前仅支持在Android运行。
特性
移动数据库: Realm是第一个直接在手机,平板电脑和可穿戴设备内部运行的数据库。
简单:数据直接作为对象公开,并且可以通过代码查询,从而消除了对ORM充满性能和维护问题的需求。
线程安全: Realm支持简单的线程安全,关系和加密。
性能: Realm在常见操作上比原始SQLite更快,同时保持极其丰富的功能集。
项目热度
标星: 10.9k
拷贝: 1670
贡献人数: 84
最后更新: 2020-06-07
代码提交活跃度:
推荐指数:【5】颗星
开发语言
开发语言:java
使用方法
在文件build.gradle添加依赖:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath “io.realm:realm-gradle-plugin:5.15.0”
}
}在build.gradle头部添加:
apply plugin: ‘realm-android’
例子:
//定义实体
public class Dog extends RealmObject {
private String name;
private int age;
}
public class Person extends RealmObject {
@PrimaryKey
private long id;
private String name;
private RealmList dogs;
}
//创建对象
Dog dog = new Dog();
dog.setName(“Rex”);
dog.setAge(1);
// 初始化 Realm
Realm.init(context);
// 获取Realm
Realm realm = Realm.getDefaultInstance();
// 查询年龄大于2岁的狗
final RealmResults puppies = realm.where(Dog.class).lessThan(“age”, 2).findAll();
puppies.size();
// 创建事务
realm.beginTransaction();
final Dog managedDog = realm.copyToRealm(dog);
Person person = realm.createObject(Person.class);
person.getDogs().add(managedDog);
realm.commitTransaction();
//添加数据变化监听
puppies.addChangeListener(new OrderedRealmCollectionChangeListener>() {
@Override
public void onChange(RealmResults results, OrderedCollectionChangeSet changeSet) {
// 查询结果实时通知
changeSet.getInsertions();
}
});
// 后台线程异步更新
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() {
// 数据实时自动更新
puppies.size();
managedDog.getAge();
}
});
项目地址
声明:来自编程乐趣,仅代表创作者观点。链接:https://eyangzhen.com/4080.html