Realm 是一款专为移动端和嵌入式场景设计的高性能、跨平台的 对象数据库(NoSQL),由 MongoDB 团队维护。它的核心头脑是将数据模型直接映射到对象(如 Java/Kotlin、Swift 等语言中的类),开发者无需编写复杂的 SQL 语句或 ORM 代码即可高效操作数据。
其核心特点:
- 对象导向的数据模型
- 数据直接以原生对象形式存储和操作,无需手动解析或序列化。
- 支持嵌套对象、集合(List/RealmList)和关系(一对一、一对多)。
- 跨平台与多语言支持
- 支持 Android、iOS、Flutter、React Native、Node.js、Java、Swift、Kotlin 等。
- 数据文件格式统一,不同平台可共享同一 Realm 数据库文件。
- 高性能
- 基于 C++ 核心引擎,数据直接映射到内存,读写速度接近原生内存操作。
- 比 SQLite 快 2~10 倍(尤其在复杂查询和大数据集场景下)。
好了费话不多说,下面我们看看在Android中怎么快速、高效的利用Realm;
当地存储storage集成
该库是基于Realm封装的一个简朴易用的当地存储库,官方文档集成Realm稍有点麻烦,为了方便利用兼容等问题,因此封装了storage;当前storage sdk已经发布到maven center仓库,可以在项目中直接利用;
Storage SDK集成,AS最新版本/gradle8.7版本需要在工程的libs.versions.toml添加引用地址
- storageRealm = "1.0.0"
- eyinfo-storage-realm = {
- module = "io.github.eyinfo:storage-realm", version.ref = "storageRealm" }
复制代码 接下来需要在对应模块工程的build.gradle配置了,做以下几项修改
- //在头部添加realm-android插件定义
- apply plugin: "realm-android"
- android {
-
- //常规配置
- }
- //启用realm同步配置
- realm {
-
- syncEnabled = true
- }
- dependencies {
-
- //这里即可将sdk导入,然后同步一下工程即可
- api libs.storage
- }
复制代码 当然还需要在项目根目录的build.gradle中添加realm的classpath插件引用
- #其中libs.versions.toml配置
- realmGradlePlugin = "10.19.0"
- realm-gradle-plugin = {
- module = "io.realm:realm-gradle-plugin", version.ref = "realmGradlePlugin" }
- #然后再在gradle添加配置,这里sync一下进行导入
- buildscript {
-
- repositories {
-
- mavenCentral()
- }
- dependencies {
-
- classpath libs.realm.gradle.plugin
- }
- }
复制代码 最后在application设置Realm初始化配置,即可实现快速集成
参考地址:
- 打开和关闭Realm配置:https://www.mongodb.com/zh-cn/docs/atlas/device-sdks/sdk/java/realm-files/open-and-close-a-realm/
- public class MyApplication extends Application {
-
- @Override
- public void onCreate() {
-
- super.onCreate();
- ConfigurationRealm.getInstance().init(
- getApplicationContext(), //需要传入应用上下文
- "storage.realm", //根据需要设置数据库名称
- new UserModules() //导入Realm数据库自定义模型,参考下面说明
- );
- }
- }
复制代码 创建Realm数据模型
官方模型数据文档:https://www.mongodb.com/zh-cn/docs/atlas/device-sdks/sdk/java/model-data/
下面以用户表数据为例,演示如何定义一个Realm数据模型
这里以继承RealmObject为例,还需要添加@RealmClass注解
- @EqualsAndHashCode(callSuper = true)
- @Data
- @NoArgsConstructor
- @AllArgsConstructor
- @RealmClass
- public class User extends RealmObject<
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |