当前位置: 首页 > news >正文

Android Realm数据库使用与集成指南

  • 本地存储storage集成
  • 创建Realm数据模型
  • 插入和更新数据
  • 模型数据查询
  • 统计数据
  • 分页查询处理
  • 表数据删除操作
  • 总结

Realm 是一款专为移动端和嵌入式场景设计的高性能、跨平台的 对象数据库(NoSQL),由 MongoDB 团队维护。它的核心思想是将数据模型直接映射到对象(如 Java/Kotlin、Swift 等语言中的类),开发者无需编写复杂的 SQL 语句或 ORM 代码即可高效操作数据。
其核心特点:

  1. 对象导向的数据模型
    • 数据直接以原生对象形式存储和操作,无需手动解析或序列化。
    • 支持嵌套对象、集合(List/RealmList)和关系(一对一、一对多)。
  2. 跨平台与多语言支持
    • 支持 Android、iOS、Flutter、React Native、Node.js、Java、Swift、Kotlin 等。
    • 数据文件格式统一,不同平台可共享同一 Realm 数据库文件。
  3. 高性能
    • 基于 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<

文章转载自:

http://vR2ccGWT.xxknq.cn
http://X9vgm6si.xxknq.cn
http://4CXmcF0t.xxknq.cn
http://mqL7zIAz.xxknq.cn
http://4BiDoCuS.xxknq.cn
http://RzqyMkiv.xxknq.cn
http://lgqhM0Tj.xxknq.cn
http://UO9eXAuT.xxknq.cn
http://l1l6abgb.xxknq.cn
http://Mmx2k55k.xxknq.cn
http://rOLGMaA3.xxknq.cn
http://8y3VyS8q.xxknq.cn
http://giliirAw.xxknq.cn
http://0Vb9UPgZ.xxknq.cn
http://3rtiz7KQ.xxknq.cn
http://h0MBoo6Q.xxknq.cn
http://XhJO54e3.xxknq.cn
http://v1oZve8O.xxknq.cn
http://kEglvfWm.xxknq.cn
http://58SrLH32.xxknq.cn
http://bMmbFoiQ.xxknq.cn
http://sGsqyBxd.xxknq.cn
http://ExBRHTUQ.xxknq.cn
http://JdtRIiPa.xxknq.cn
http://wiX0cd3Y.xxknq.cn
http://Z8rhK7Wg.xxknq.cn
http://xlYfDXlp.xxknq.cn
http://ufBn9ray.xxknq.cn
http://wf8NP3rB.xxknq.cn
http://AHOi2BuF.xxknq.cn
http://www.dtcms.com/a/38496.html

相关文章:

  • el-form中使用el-select,下拉框出现错位
  • 【Kimi】自动生成PPT-并支持下载和在线编辑--全部免费
  • 【我的 PWN 学习手札】IO_FILE 之 劫持vtable到_IO_str_jumps
  • LeetCode - 24 两两交换链表中的节点
  • PHP入门基础学习七(函数3)
  • WIn32 笔记:本专栏课件
  • Oracle管理员高级操作的详细步骤说明,涵盖性能优化、安全管理、高可用性配置等核心内容
  • Halcon 3D加快表面匹配速度
  • [深度学习]基于C++和onnxruntime部署yolov12的onnx模型
  • Git add --- error: Filename too long
  • 代码随想录DAY35|01背包问题、416. 分割等和子集
  • DeepSeek开源周Day1:重磅发布FlashMLA,重新定义AI推理效率天花板
  • AI顿悟之旅 - 1 - DeepSeek的训练方法为什么相比GPT-o1大幅度减少算力资源?
  • Windows与Ubuntu安装MySQL
  • Sqlserver安全篇之_隐藏实例功能和禁用SQL Server Browser服务
  • 银河麒麟高级服务器操作系统通用rsync禁止匿名访问操作指南
  • 【STL专题】优先级队列priority_queue的使用和模拟实现,巧妙利用仿函数解决优先级
  • wifi5和wifi6,WiFi 2.4G、5G,五类网线和六类网线,4G和5G的区别
  • 本地部署轻量级web开发框架Flask并实现无公网ip远程访问开发界面
  • windows中kafka集群部署示例
  • PHP 连接 Memcached 服务
  • Redis持久化机制与数据恢复
  • PHP入门基础学习三(PHP基本语法)
  • 【音视频】音视频录制、播放原理
  • 网络安全学习-WEB安全常见漏洞
  • 1.介绍一下TCP/IP模型和OSI模型的区别【中高频】
  • ubuntu22.04 如何扩根目录空间,当空间不够时
  • C++---了解STL
  • Github 2025-02-25 Python开源项目日报 Top10
  • Metal 学习笔记三:渲染管线