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

Realm,为移动设备而生!替代 SQLite 和 Core Data。为你省下数周的时间和数千行的代码,帮你创造出更棒的用户体验。–Realm官网


背景

说到手机数据库,一般都是想到SQLite。今天我给大家推荐Realm。

Realm是一个直接在手机,平板电脑或可穿戴设备中运行的移动数据库。目前仅支持在Android运行。

特性

  • 移动数据库: Realm是第一个直接在手机,平板电脑和可穿戴设备内部运行的数据库。

  • 简单:数据直接作为对象公开,并且可以通过代码查询,从而消除了对ORM充满性能和维护问题的需求。

  • 线程安全: Realm支持简单的线程安全,关系和加密。

  • 性能: Realm在常见操作上比原始SQLite更快,同时保持极其丰富的功能集。

项目热度

标星: 10.9k

拷贝: 1670

贡献人数: 84

最后更新: 2020-06-07

代码提交活跃度:

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

推荐指数:【5】颗星

开发语言

开发语言:java

使用方法

Realm是一个移动数据库:SQLite和Core 的替代品在文件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<Dog> dogs; 
}

//创建对象
Dog dog = new Dog();
dog.setName("Rex");
dog.setAge(1);
// 初始化 Realm
Realm.init(context);
// 获取Realm
Realm realm = Realm.getDefaultInstance();
// 查询年龄大于2岁的狗
final RealmResults<Dog> 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<RealmResults<Dog>>() {
 @Override
 public void onChange(RealmResults<Dog> 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

Realm是一个移动数据库:SQLite和Core 的替代品》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.hashtobe.com/509.html