最近闲下来学习了有关Realm的使用,写下来,作为自己的学习笔记。
官方开发文档:https://realm.io/docs/java/latest/#examples
Realm是一个可以替代SQLite以及ORMlibraries的轻量级数据库。相比SQLite,Realm更快并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,以及加密支持,这些都为安卓开发者带来了方便。
目前版本2.2.1 ,从1.0.0之后只支持android studio导入
1. 引入工程
1.在工程gradle中:添加库classpath "io.realm:realm-gradle-plugin:2.2.1"
2.在app.gradle中引入库 apply plugin: 'realm-android'
3.同步项目即可,不必添加混淆规则。
2. 首先介绍下简单实用
1)创建一个Realm
一个Realm就相当于一个sqlite,他是持久保存在app安装文件下的。
这里需要说明的是,在创建Realm之前应该先进行初始化。我们可以在入口处app进行初始化。
public class RealmApp extends Application { @Override public void onCreate() { super.onCreate(); Realm.init(getApplicationContext()); } }
要创建一个新的Realm,你可以在任意Activity中调用静态方法Realm.getInstance。
Realm myRealm = Realm.getInstance(context);
注意,调用Realm.getInstance,而没有传入RealmConfiguration,会创建一个叫做 default.realm的Realm文件。此时这个default.realm就相当于sqlite中我们说的数据库名。
如果你想向app中添加另一个Realm,必须使用一个RealmConfiguration.Builder对象,并为 Realmfile 指定一个独有的名字。
Realm myOtherRealm =Realm.getInstance(
newRealmConfiguration.Builder(context)
.name("myOtherRealm.realm")
.build()
);
2)创建一个RealmObject类
此时只需要写一个类继承RealmObject即可,只要继承了RealmObject类,任意JavaBean都能存储在Realm中。
例: public class User extends RealmObject { private String name; private int age; public User() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
如果你想让RealmObject的一个成员变量作为主键,你可以使用@PrimaryKey注解。下面会详解RealmObject的注解的含义,这里先不做介绍。
3)创建transaction
在Realm中进行的数据处理都是在事务中进行的。关于事务的使用有好多种方法。
realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { User user = realm.createObject(User.class); user.setName("xiaoming"); user.setAge(2); } }); RealmResults<User> users = realm.where(User.class).findAll(); for (User user : users) { Log.i("tag", "initView: "+user); }
在此分别进行了数据的插入和查询的操作。
今天就先到这了,接下来介绍Realm的进一步的用法