Realm android 使用(一)

来源:互联网 发布:网络可靠性评估协议 编辑:程序博客网 时间:2024/05/01 22:52

最近闲下来学习了有关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的进一步的用法

1 0
原创粉丝点击