Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Realm Java 官方教程翻译 (一):Getting Started

Realm Java 官方教程翻译 (一):Getting Started

作者头像
青蛙要fly
发布于 2024-02-18 00:11:08
发布于 2024-02-18 00:11:08
33500
代码可运行
举报
运行总次数:0
代码可运行

因为准备暂时的抛弃Sqlite而转成Realm。所以在Realm官网上看相关的教程。看见官网有相应的Java-Realm方面的使用教程,于是准备写Realm相关的知识。但是是全英文的,所以按照官网的教程的步骤,准备分篇来进行翻译。当然希望大家如果发现哪里有问题,可以提出来,(不要打我脸)。

按照下面的图片所示来分篇翻译:

学习步骤

然后这篇文章的知识点是如下图所示:

该篇翻译的知识点

原文链接:Realm Java2.2.1Latest

Realm Java 能让你安全、持续、快速的方式来写你的App中的model层。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//定义你的model类,并且继承自RealmObject
public class Dog extends RealmObject {
    private String name;
    private int age;

    //...生成相应属性的getters 和 setters方法...
}

public class Person extends RealmObject {
    @PrimaryKey
    private long id;
    private String name;
    private RealmList dogs; // 声明一对多的关系  
    //...生成相应属性的getters 和 setters方法...
}

//像使用标准的java对象一样使用它们
Dog dog = new Dog();
dog.setName("Rex");
dog.setAge(1);

//初始化 Realm
Realm.init(context);

//在该线程中获取一个Realm实例
Realm realm = Realm.getDefaultInstance();

//在Realm中查询所有的大于2岁的狗
final RealmResults puppies = realm.where(Dog.class).lessThan("age", 2).findAll();
puppies.size(); //小狗数量结果为0,因为现在Realm中还没有添加狗



// 在事务中存留你的数据
realm.beginTransaction();
final Dog managedDog = realm.copyToRealm(dog); // Persist unmanaged objects
Person person = realm.createObject(Person.class); // Create managed objects directly
person.getDogs().add(managedDog);
realm.commitTransaction();

//当数据改变的时候,Listener将会被调用
puppies.addChangeListener(new RealmChangeListener>() {
    @Override
    public void onChange(RealmResults results) {
         //查询到的小狗的数量结果也会在同一时间被更新掉
        puppies.size(); // 小狗数量为1
    }
});

//在后台进程中异步更新对象
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() {
         //原始查询和Realm对象会被自动更新
        puppies.size(); // 小狗的数量为0,因为没有比2岁更年轻的小狗了
        managedDog.getAge();   // 小狗的年龄已经被更新为3了
    }
});

开始

下载Android使用的 Realm 或者查看reaml-java 的源码 realm-java on GitHub.

首先要准备的

我们当前只支持在安卓中使用的Java版本Realm。 Android Studio 版本大于等于 1.5.1 最新版本的Android SDK JDK 版本要大于等于 7 我们支持所有API为9及以上的安卓版本(Android 2.3及2.3以上版本)

安装

Realm是作为一个Gradle插件来进行安装的。 安装分为二步: 第一步: 在project目录下的build.gradle中添加下面所示的class路径

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:2.2.1"
    }
}

project目录下的 build.gradle 文件如下图所示位置:

build.gradle

第二步: 在应用目录下的build.gradle文件的内容上方处的使用realm-android插件。 apply plugin: 'realm-android'

应用目录下的build.gradle的位置如下所示:

build.gradle

一旦这二步你都已经写好了。就可以简单的刷新下你的gradle依赖。如果你通过v0.88以前的版本来更新,你需要去清理下你的gradle项目(./gradlew clean) 来移除之前存在的安装。

关于二个所要修改的build.gradle文件的例子里面如下面显示查看: Project level build.gradle Application level build.gradle

其他的编译系统 Maven 和 Ant 编译系统并不支持。如果你希望能看到支持这些编译系统,请表达你对下面问题的兴趣,然后我们也可以评估。 Maven support Ant support 你们的意见将让我们做决定是否及何时来实现Ant 和 Maven插件。

从 v1.0.0开始,Eclipse将不再支持。我们建议转移到 Android Studio.

ProGuard

ProGuard配置已经被Realm library所提供,这意味着你并不需要在你的ProGuard配置去添加其他的Realm的特殊的规则。

Realm Browser

我们提供了独立的名叫Realm Browser Mac app 去读取和编辑.realm的数据库

Realm Browser

API Reference

你可以查看我们的全部API文档 ,包括所有的classes, methods 及更多。

例子

看下我们的examples,来看Realm是如何在app中被使用的。 看这里 来知道关于怎么运行这些例子的更多详情。

introExample:包括了简单的例子,让你知道怎么去使用当前的API.

gridViewExample :一个简单的app,来展示怎么通过Realm来支持GridView的存储。同时它还呈现了如何构建一个JSON(使用GSON)的数据库,及如何使用ABI splits来减少最终的APK的大小。

threadExample :一个简单的应用来知道如何在多线程环境中使用Realm。

adapterExample :如何通过使用RealmBaseAdapter和RealmRecyclerViewAdapter来使Realm以优雅的方式来作用于 Android ListView and RecyclerView

jsonExample :呈现如何使用一种新的Realm JSON 工具

encryptionExample :如何使用加密Realms

rxJavaExamples :如何搭配RxJava来使用Realm

unitTestExample :教你在使用Realm的时候如何编写单元测试

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Realm Java 官方教程翻译 (二):Getting Help 及 Models
对于你的代码是否需要帮忙?在StackOverflow : realm上进行询问,我们会积极的查看问题及进行回答!
青蛙要fly
2024/01/27
1810
Realm Java 官方教程翻译 (二):Getting Help 及 Models
Realm技术选型初体验
Realm Realm 是一个 MVCC (多版本并发控制)数据库,由Y Combinator公司在2014年7月发布一款支持运行在手机、平板和可穿戴设备上的嵌入式数据库,目标是取代SQLite。 Realm 本质上是一个嵌入式数据库,他并不是基于SQLite所构建的。它拥有自己的数据库存储引擎,可以高效且快速地完成数据库的构建操作。和SQLite不同,它允许你在持久层直接和数据对象工作。在它之上是一个函数式风格的查询api,众多的努力让它比传统的SQLite 操作更快 查看官网介绍:https://r
巫山老妖
2018/07/20
7670
Realm数据库学习之快速入门
任何数据库都无非是CRUD的操作,也就是为了增、删、改、查的使命。 相对于传统的原生的Sqlite开发,Realm的API使开发者显得轻松自在。
Frank909
2019/01/14
6800
Android十八章:Realm-in-android
Realm是一个开源的ORM概念的(对象关系映射)移动数据库,可以在Android ,ios ,java各个平台上使用,性能秒杀sqlite等数据库比如(greendao)。
ppjun
2018/09/05
1.1K0
Realm Java 官方教程翻译 (三):Relationships
这一段大概意思懂,但不知道该怎么直译比较好,一些专业的在数据库中的术语不好直接翻译。请大家帮忙看下。下面评论里回复下。谢谢了 (我是这么翻译的:在Realm中,Relationships 在Realm中是低消耗的。这意味着,建立一个链接在速度方面并不是高消耗,并且relationships的内部展现在内存消耗方面又是高效的。)
青蛙要fly
2024/01/29
1980
Realm Java 官方教程翻译 (三):Relationships
【Android】Realm详解
介绍 Realm 是一个 MVCC (多版本并发控制)数据库,由Y Combinator公司在2014年7月发布一款支持运行在手机、平板和可穿戴设备上的嵌入式数据库,目标是取代SQLite。 Realm 本质上是一个嵌入式数据库,他并不是基于SQLite所构建的。它拥有自己的数据库存储引擎,可以高效且快速地完成数据库的构建操作。和SQLite不同,它允许你在持久层直接和数据对象工作。在它之上是一个函数式风格的查询api,众多的努力让它比传统的SQLite 操作更快 。 详细介绍(如果进不去,看这个也行)
Gavin-ZYX
2018/05/18
4.5K0
Android数据库Realm实践
Android开发中常用的数据库有5个: 1. OrmLite OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM。支持JDBC连接,Spring以及Android平台。语法中广泛使用了注解(Annotation)。 2. SugarORM SugarORM 是 Android 平台专用ORM。提供简单易学的APIs。可以很容易的处理1对1和1对多的关系型数据,并通过3个函数save(), delete() 和 find() (或者 findById()) 来简化CRUD基本操
xiangzhihong
2018/02/02
1.5K0
Android数据库Realm实践
Android Realm初试
Realm is a mobile database that runs directly inside phones, tablets or wearables. This repository holds the source code for the Java version of Realm, which currently runs only on Android.
方志朋
2022/11/30
5280
Realm 基本用法
前提 Android Studio 1.5.1 或者更高版本; JDK 版本 >=7; 较新的 Android SDK 版本; 支持 Android API 9 以上的所有版本(Android 2.3 Gingerbread 及以上)。 为什么使用Realm Realm Java 让你能够高效地编写 app 的模型层代码,保证你的数据被安全、快速地存储。 1、Realm基本配置 A.在module的build.gradle中添加如下代码: apply plugin: 'realm-android' 如
code_horse
2018/07/02
1.3K0
Android开发笔记(八十五)手机数据库Realm
Android自带的SQLite数据库,在多数场合能够满足我们的需求,但随着app广泛使用,SQLite也暴露了几个不足之处: 1、开发者编码比较麻烦,而且还要求开发者具备SQL语法知识; 2、SQLite默认没有加密功能,手机一旦丢失容易导致数据库被破解; 3、SQLite底层采用java代码,导致性能提升存在瓶颈; 基于以上几点,Android上的各种ORM应运而生(ORM全称Object Relational Mapping,即对象关系映射),最常见的便是greenDAO了。greenDAO是一个将对象映射到SQLite数据库中的ORM解决方案,它在github上的地址是https://github.com/greenrobot/greenDAO,下面是greenDAO相比直接使用SQLite的几个改进点: 1、简化数据库操作的编码,开发者可以不用熟悉SQL语法; 2、使用灵活,可在实体类中自定义类和枚举类型; 3、号称是基于SQLite的ORM框架中性能最好的;(博主没对比greenDAO与直接使用SQLite的性能差异,所以只能是跟其他ORM框架比较,比如ORMLite、sugarORM等等) 但是greenDAO使用的数据库引擎还是SQLite,因此某些方面并没有本质的改善,比如数据库的加密、数据库操作的性能等等。 对于Realm来说,这些改善就是可能的了,因为Realm有自己的数据库引擎,而且引擎使用C++编写,性能比java引擎的SQLite有数倍提升。Realm使用C++引擎还有一个好处,就是可以跨平台使用,不但能用于Android,也能用于IOS。Realm的第三个好处是,它具有很多移动设备专用数据库的特性,比如支持JSON、流式api、数据变更通知,以及加密支持,这些都为开发者带来了方便。
aqi00
2019/01/18
1.9K0
【翻译】Realm , ObjectBox ,还是 Room ,哪个适合你?
2017-09-30 by Liuqingwen | Tags: Kotlin Android 翻译 | Hits
IT自学不成才
2019/01/08
3.9K0
Android 开发的17个建议,紧跟Google官方,进阶必看!
将你的Android SDK放在你的home目录或其他应用程序无关的位置。 当安装有些包含SDK的IDE的时候,可能会将SDK放在IDE同一目录下,当你需要升级(或重新安装)IDE或更换的IDE时,会非常麻烦。 此外,若果你的IDE是在普通用户,不是在root下运行,还要避免吧SDK放到一下需要sudo权限的系统级别目录下。
张拭心 shixinzhang
2022/05/06
6570
《Kotin 极简教程》第13章 使用 Kotlin 和 Anko 的Android 开发
Anko (https://github.com/Kotlin/anko) 是一个用 Kotlin 写的Android DSL (Domain-Specific Language)。长久以来,Android视图都是用 XML 来完成布局的。这些 XML可重用性比较差。同时在运行的时候,XML 要转换成 Java 表述,这在一定程度上占用了 CPU 和耗费了电量。
一个会写诗的程序员
2018/08/17
3.7K0
技术实操| 自有App如何引入小游戏(Android篇)
之前有跟大家分享过ios系统上引入FinClip SDK,并将小程序游戏运行到自有App 中,这周就继续分享如何在Android系统中引入FinClip SDK。
Lydiasq
2022/12/28
1.2K0
技术实操| 自有App如何引入小游戏(Android篇)
Android 阿里百川cps SDK接入流程
因公司业务需求,需接入阿里百川SDK和京东联盟cps相关服务,为了跳到淘宝和京东,用户购买后得到佣金。接入过程中遇到很多坑,网上相关资料也甚少,虽然东西不算多,但花了不少时间,在此记录下来,为了以后的人能有个参考。 这里只跳转到天猫,淘宝的产品详情页,京东产品详情会另做文章分享。
Jingbin
2018/09/10
2.1K0
写一个Gradle插件
我们在Android Studio中创建的app项目中,build.gradle常有如下这行代码:
Clayman Twinkle
2019/04/01
7460
写一个Gradle插件
使用Gradle管理你的Android Studio工程
关于Android Gradle更多详细内容已经出书《Android Gradle权威指南》,大家可以购买,看更多没有介绍的知识点和内容,购买链接如下
飞雪无情
2018/08/28
1.1K0
使用 R8 压缩您的应用
作者 / Google 软件工程师 SørenGjesse 和 Christoffer Adamsen
Android 开发者
2021/01/07
1.5K0
Realm数据库 从入门到“放弃”
Realm是由Y Combinator公司孵化出来的一款可以用于iOS(同样适用于Swift&Objective-C)和Android的跨平台移动数据库。目前最新版是Realm 2.0.2,支持的平台包括Java,Objective-C,Swift,React Native,Xamarin。
一缕殇流化隐半边冰霜
2018/08/30
5.2K0
想读Spring源码?先从这篇「 极简教程」开始吧...
为什么要阅读源码?这是一个有趣的问题,类似的问题还有,为什么要看书?为什么要爬山?
磊哥
2020/04/10
4.3K1
想读Spring源码?先从这篇「 极简教程」开始吧...
相关推荐
Realm Java 官方教程翻译 (二):Getting Help 及 Models
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验