android - SQlite 数据库 VS Room 持久化库
问题描述
我需要帮助我的考试项目找到 ROOM 数据库的差异和好处:我试图在 android 开发文档中搜索以了解这两个数据库之间的差异,但我无法清楚地理解。我也没有在堆栈溢出中找到任何答案。我还想知道与 SQLite 数据库相比,使用 Room 持久性的好处。
希望有人能给我明确的答案。
解决方案
Room 是一个 ORM,对象关系映射库。换句话说,Room 会将我们的数据库对象映射到 Java 对象。Room 在 SQLite 之上提供了一个抽象层,以允许流畅的数据库访问,同时利用 SQLite 的全部功能。
SQLite 和 Room 持久化库的区别:-
- 对于 SQLite,没有原始 SQLite 查询的编译时验证。但在 Room 中,编译时有 SQL 验证。
- 随着架构的更改,您需要手动更新受影响的 SQL 查询。房间解决了这个问题。
- 您需要使用大量样板代码在 SQL 查询和 Java 数据对象之间进行转换。但是,Room 将我们的数据库对象映射到没有样板代码的 Java 对象。
- Room 是为使用 LiveData 和 RxJava 进行数据观察而构建的,而 SQLite 则不然。
房间注解和主要组成部分:
- @Entity — 定义我们的数据库表
- @DAO — 提供用于读取和写入数据的 API
- @Database — 代表一个数据库持有者
这是中篇文章的链接,它详细解释了 Room 持久性库的用法和好处。我希望这有帮助。
编辑1:您可以参考谷歌开发者文档,其中清楚地解释了如何使用房间将数据保存在本地数据库中。链接到 Google 开发者文档
推荐阅读
- r - R Studio F2 不再启动`View()`
- php - 如何使用自定义字段中的 PHP 短代码作为 Wordpress 上的 href 链接?
- servicestack - ServiceStack SSE 关闭 IIS 应用程序池
- jquery-ui - 在单独的元素中显示 jquery ui 日期值
- javascript - Jquery将数据附加到类
- nuget - 如何防止 NuGet 包含依赖二进制文件?
- asp.net - 如何使用 asp.net 进行安全的 ajax 调用?
- java - 来自java的Postgres存储过程调用,要返回的表
- java - hasNextInt 不会返回 false 并退出循环
- sql - 如何将 NativeScript 应用程序连接到 SQL 数据库?