SQlite 数据库 VS Room 持久性库 [关闭]

Posted

技术标签:

【中文标题】SQlite 数据库 VS Room 持久性库 [关闭]【英文标题】:SQlite Database VS Room persistence library [closed] 【发布时间】:2018-11-11 23:43:21 【问题描述】:

我需要帮助我的考试项目找到 ROOM 数据库的差异和好处: 我试图在android开发文档中搜索以了解这两个数据库之间的区别,但我无法清楚地理解。 我也没有在堆栈溢出中找到任何答案。 我还想知道与 SQLite 数据库相比,使用 Room 持久性的好处。

希望有人能给我明确的答案。

【问题讨论】:

【参考方案1】:

Room 是一个 ORM,对象关系映射库。换句话说,Room 会将我们的数据库对象映射到 Java 对象。 Room 在 SQLite 之上提供了一个抽象层,以允许流畅的数据库访问,同时利用 SQLite 的全部功能。

SQLite 和 Room 持久化库的区别:-

对于 SQLite,没有原始 SQLite 查询的编译时验证。但在 Room 中,编译时会进行 SQL 验证。 随着架构的更改,您需要手动更新受影响的 SQL 查询。 Room 解决了这个问题。 您需要使用大量样板代码在 SQL 查询和 Java 数据对象。但是,Room 无需样板代码即可将我们的数据库对象映射到 Java 对象。 Room 可与 LiveData 和 RxJava 一起用于数据观察,而 SQLite 则不能。

房间注解及主要组成部分:

    @Entity — 定义我们的数据库表 @DAO — 提供用于读取和写入数据的 API @Database — 代表数据库持有者

这是中号文章的link,它详细解释了 Room 持久性库的用法和好处。 我希望这会有所帮助。

编辑1:你可以参考谷歌开发者文档,里面清楚地解释了如何使用房间将数据保存在本地数据库中。 Link to Google Developer Docs

【讨论】:

好的、清晰的答案总结了使用 Room 的主要好处。我唯一想说的是,提供的链接只是官方文档的重新散列(但细节和清晰度较低)。我建议您参考谷歌开发者文档而不是 developer.android.com/training/data-storage/room @JeneralJames 感谢您的宝贵建议,我已在此答案中包含指向 Google 开发人员文档的链接。 我在 viewpager 片段中遇到 Room 加载缓慢的问题...请看这里:***.com/q/57392635/3904109

以上是关于SQlite 数据库 VS Room 持久性库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

android 开发进程 0.37 room数据存储的使用

Android 房间持久性库:Upsert

Android Room持久性库@Update无效

有人可以帮助我更好地理解 Room 持久性库吗?

Android Jetpack: Room | 中文教学视频

Jetpack架构组件库:Room