福建师范大学Android Room 技术浅谈
## 前提告知该文章是用作课程评分,本文内容虽为原创,但也有参考。
1.Room的背景简介
处理大量结构化数据的应用可极大地受益于在本地保留这些数据。最常见的使用场景是缓存相关的数据,这样一来,当设备无法访问网络时,用户仍然可以在离线状态下浏览该内容。
Room 持久性库在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。
2.Room的优点
- 使用编译时注解,能够对@Query和@Entity里面的SQL语句等进行验证;
- 与SQL语句的使用更加贴近,能够降低学习成本,提交开发效率,减少模板代码;
- @Embedded 能够减少表的创建;
- 对LiveData、Kotlin Coroutines的支持
3.Room三大组件
1.Database: 可以使用此组件创建数据库 holder,注释定义实体列表,和类的内容定义数据访问对象(DAO)数据库中的表。它也是基本连接的主要访问点。
2.Entity: 实体类对象模型,一般对应表结构。实体的每个字段在数据库中都是保存的,除非你用@Ignore 注解。
3.DAO:全称Database Access Object,定义了对数据库中数据的读写等操作,DAO中可以使用SQL语句来操作数据库。
4.android Room 依赖的配置
在build.gradle 文件的 dependencies添加一下代码:
implementation fileTree(dir:'libs',include:['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.room:room-common:2.3.0'
implementation 'androidx.room:room-runtime:2.3.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:esprsso-core:3.2.0'
implementation 'com.google.andrid.material:material:1.1.0'
implementation 'andrid.arch.presistence.room:runtime:1.1<