Realm使用简单介绍
来源:互联网 发布:swfobject.js 编辑:程序博客网 时间:2024/06/05 09:33
简介
Realm是一个轻量级的数据库,在Android开发中,它可以替代 SQLite 和 ORM 框架。相比SQLite,Realm更快并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,以及加密支持。
官网主页:realm官网
GutHub地址:realm的GitHub地址
工程配置
1、在工程根目录的build.gradle中添加dependencies
classpath "io.realm:realm-gradle-plugin:1.1.0"2、在app的build.gradle中添加plugin
apply plugin: 'realm-android'注意:不需要再配置compile dependencies
realm的创建
1、获取默认realm
Realm myRealm = Realm.getDefaultInstance();
需要注意,在调用这个方法之前一定要先setDefaultConfiguration,否则会抛异常
if (defaultConfiguration == null) { throw new NullPointerException("No default RealmConfiguration was found. Call setDefaultConfiguration() first"); }RealmConfiguration必须通过Builder构建,RealmConfiguration的构造方法是私有的。
指定明确的RealmConfiguration可以获取指定Realm实例
Realm.getInstance(new RealmConfiguration.Builder(MainActivity.this).build());
2、创建RealmObject
一个类继承了RealmObject,那么它就可以用来存储Realm
官方代码示例
// Define you model class by extending RealmObjectpublic 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<Dog> dogs; // Declare one-to-many relationships // ... Generated getters and setters ...}// Use them like regular java objectsDog dog = new Dog();dog.setName("Rex");dog.setAge(1);// Create a RealmConfiguration that saves the Realm file in the app's "files" directory.RealmConfiguration realmConfig = new RealmConfiguration.Builder(context).build();Realm.setDefaultConfiguration(realmConfig);// Get a Realm instance for this threadRealm realm = Realm.getDefaultInstance();// Query Realm for all dogs younger than 2 years oldfinal RealmResults<Dog> 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 transactionrealm.beginTransaction();final Dog managedDog = realm.copyToRealm(dog); // Persist unmanaged objectsPerson person = realm.createObject(Person.class); // Create managed objects directlyperson.getDogs().add(managedDog);realm.commitTransaction();// Listeners will be notified when data changespuppies.addChangeListener(new RealmChangeListener<RealmResults<Dog>>() { @Override public void onChange(RealmResults<Dog> results) { // Query results are updated in real time puppies.size(); // => 1 }});// Asynchronously update objects on a background threadrealm.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://realm.io/docs/java/latest/#models
后续做一下文档翻译,源码解析。
欢迎扫描二维码,关注公众号
0 0
- Realm使用简单介绍
- Realm简单使用
- realm简单使用
- Realm 简单使用
- Realm 数据库的简单使用
- Realm数据库的简单使用
- 数据库简单使用之Realm入门
- realm-android-library简单使用(笔记)
- Swift-Realm简单使用,代替Sqlite、Crodata的强大数据库
- Realm Android简单使用说明
- Realm Android简单使用说明
- realm 使用记录
- Realm 使用教程
- Realm数据库使用
- Realm使用小记
- Realm使用简介
- realm大致使用
- 数据库Realm的使用
- HTTP请求简单总结
- 基于moment插件实现的获取各种时间的类
- F1~F12功能使用
- ruby学习笔记之include/prepend
- 支撑分布式 Scrum 团队的 5 项最佳实践
- Realm使用简单介绍
- Linux 获取音频ALSA API编程
- iOS_广点通接入
- 质数个数
- dev kvm is not found(Android studio)
- C++注意防止指针指向空
- HTTP403错误
- VS2013发布C#自动更新程序
- 《JAVA并发编程实践》读书笔记(四)