Realm是一个移动数据库:SQLite和Core 的替代品

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://github.com/realm/realm-java

声明:来自编程乐趣,仅代表创作者观点。链接:https://eyangzhen.com/4080.html

编程乐趣的头像编程乐趣

相关推荐

关注我们
关注我们
购买服务
购买服务
返回顶部