Android数据存储:什么是Room Persistence Library?

简介: Android数据存储:什么是Room Persistence Library?

Room Persistence Library 是 Google 提供的用于简化 Android SQLite 数据库操作的库。它是在 SQLite 数据库之上构建的一个抽象层,提供了更高级、更便捷的方式来处理数据库操作,同时利用编译时检查来减少错误。

Room 提供了三个主要组件:

  1. Entity(实体): 用于定义数据库表结构的 Java 类。每个实体类代表数据库中的一个表,并且类的字段对应表中的列。

     @Entity
     public class User {
         
         @PrimaryKey
         public int id;
         public String name;
         public int age;
     }
    
  2. DAO(Data Access Object): 定义访问数据库的方法。DAO 是一个接口或抽象类,其中的方法用于执行数据库的增删改查操作。

     @Dao
     public interface UserDao {
         
         @Insert
         void insert(User user);
    
         @Update
         void update(User user);
    
         @Delete
         void delete(User user);
    
         @Query("SELECT * FROM user WHERE id = :userId")
         User getUserById(int userId);
    
         @Query("SELECT * FROM user")
         List<User> getAllUsers();
     }
    
  3. Database(数据库): 包含数据库持有者,并作为应用的主要接入点。该类负责创建和管理数据库以及提供 DAO 的实例。

     @Database(entities = {
         User.class}, version = 1)
     public abstract class AppDatabase extends RoomDatabase {
         
         public abstract UserDao userDao();
     }
    

使用 Room 时的一般步骤:

  • 创建实体类: 使用 @Entity 注解定义数据表结构。

  • 创建 DAO 接口: 使用 @Dao 注解定义数据库操作方法。

  • 创建数据库类: 使用 @Database 注解定义数据库,并声明包含的实体类和版本号。

  • 获取数据库实例: 通过 Room 的 Room.databaseBuilder() 方法或者 Room.inMemoryDatabaseBuilder() 方法构建数据库实例。

  • 执行数据库操作: 通过数据库实例获取相应的 DAO 实例,然后调用 DAO 方法执行数据库操作。

以下是一个简单的 Room 示例:

// 创建数据库实例
AppDatabase db = Room.databaseBuilder(context, AppDatabase.class, "my-database").build();

// 获取 UserDao 实例
UserDao userDao = db.userDao();

// 插入用户
User user = new User();
user.id = 1;
user.name = "John";
user.age = 25;
userDao.insert(user);

// 查询用户
User retrievedUser = userDao.getUserById(1);

// 更新用户
retrievedUser.age = 26;
userDao.update(retrievedUser);

// 删除用户
userDao.delete(retrievedUser);

// 查询所有用户
List<User> allUsers = userDao.getAllUsers();

通过使用 Room,开发者可以更方便地进行数据库操作,而且 Room 还提供了一些方便的特性,比如支持 LiveData,简化异步操作等。

相关文章
|
9月前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
107 0
|
数据库连接 数据库 Android开发
Android -- Room简化数据库设置图书案例
Android -- Room简化数据库设置图书案例
60 0
|
存储 数据库 文件存储
android 数据存储的知识点
android 数据存储的知识点
116 0
|
9月前
|
存储 XML Android开发
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
103 0
|
6月前
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
239 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
9月前
|
存储 XML 文件存储
Android数据存储的五种方式1
Android数据存储的五种方式
148 2
|
数据库 Android开发 数据库管理
Android使用Room操作SQLite数据库让其变得无比高效和简洁(进一步完善用RecyclerView显示数据库中的数据)
Android使用Room操作SQLite数据库让其变得无比高效和简洁(进一步完善用RecyclerView显示数据库中的数据)
97 0
|
9月前
|
存储 SQL 数据库
【Android 从入门到出门】第六章:使用Room数据库并测试
【Android 从入门到出门】第六章:使用Room数据库并测试
127 4
|
9月前
|
存储 安全 Android开发
Android数据存储:请解释ContentProvider是什么,它的主要作用是什么?
ContentProvider是Android的四大组件之一,主要负责结构化数据的管理与共享。它封装数据并提供安全的访问接口,通过URI实现应用间数据的标准化共享。ContentResolver与ContentProvider协作,处理数据的CRUD操作,使得其他应用能方便地调用和操作数据。
70 0
|
9月前
|
存储 Android开发
Android数据存储的五种方式3
Android数据存储的五种方式
55 0

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 7
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 10
    Android 13 SystemUI 启动流程
  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    23
  • 2
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    21
  • 3
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    52
  • 4
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    35
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    70
  • 6
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    111
  • 7
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    29
  • 8
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
    263
  • 9
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
    75
  • 10
    【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    36