SQlite数据库与Room持久化库的比较

43

我需要帮助,来完成我的考试项目,找出ROOM数据库的差异和优点:

我尝试在Android开发文档中搜索以了解这两个数据库之间的区别,但我无法清楚地理解。

我在Stack Overflow中也没有找到任何答案。

我还想知道使用Room持久性相对于SQLite数据库的好处。

希望有人能够给我清晰的答案。

1个回答

116

Room是一款对象关系映射(ORM)库,可将数据库对象映射到Java对象。

Room提供了一个抽象层,可以流畅地访问SQLite数据库,同时利用SQLite的全部功能。

SQLite和Room持久性库之间的区别:

  • 在SQLite中,没有原始的SQLite查询的编译时验证。但是在Room中,有SQL编译时验证。
  • 随着模式的更改,您需要手动更新受影响的SQL查询。Room解决了这个问题。
  • 您需要使用大量样板代码在SQL查询和Java数据对象之间进行转换。但是,Room在不需要样板代码的情况下将我们的数据库对象映射到Java对象。
  • Room专为LiveData和RxJava数据观察而构建,而SQLite则不支持。

Room注释和主要组件:

  1. @Entity - 定义数据库表
  2. @DAO - 提供读写数据的API
  3. @Database - 表示一个数据库持有者

以下是详细说明Room持久性库的用途和好处的链接到Medium文章。

编辑 1:你可以参考谷歌开发者文档,其中清楚地解释了如何使用Room在本地数据库中保存数据。链接到谷歌开发者文档


11
这是一个很好的、清晰的回答,总结了使用Room的关键优势。唯一的评论是提供的链接只是官方文档的翻版(但缺乏细节和清晰度)。我建议参考Google开发者文档,链接为https://developer.android.com/training/data-storage/room/。 - JeneralJames
1
@JeneralJames,感谢您宝贵的建议,我已在此答案中包含了Google开发者文档的链接。 - Sankalp
我在viewpager fragment中使用Room时遇到了缓慢加载的问题...请参见此处:https://stackoverflow.com/q/57392635/3904109 - DragonFire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接